Saber si una DLL contiene una determinada funcion  

Enviado Por: Lord Trancos
Web : N.A.
Email: abel@ontinet.com
Fecha: 16/03/00

Truco accedido 71 veces

 


Depende de la versión de Windows en la que se ejecute nuestra aplicacion, habrá funciones del Api que estarán o no disponibles.

Un ejemplo de esto puede ser el truco:


[186] - Ocultar tu aplicacion de la lista de tareas (Diálogo CTRL-ALT-DEL)

si lo intentas usar en Windows 2000... te encontrarás con la sorpresa de que la funcion del API utilizada en el truco no está disponible...

Para prevenir estos inconvenientes, aqui tienes una función con la que podremos asignar la procedure dinámicamente, en lugar de declararla ya de antemano.


   function AsignaProcedure(EnQueDll,Procedimiento: string):TFarProc;
   var
     MangoProc,
     MangoLib    : THandle;

   begin
     Result:=nil;
     MangoLib:=GetModuleHandle(Pchar(EnQueDll));
     if MangoLib <> 0 then
       Result:=GetProcAddress(MangoLib,Pchar(Procedimiento));

     {Si la DLL o la procedure no esta disponible... error}
     if (MangoLib=0) or (Result=nil) then
       raise Exception.create( Procedimiento+
                               ' en '+
                               EnQueDll+
                               ' no encontrado.');
   end;



Tienes un ejemplo de cómo usarla en una actualización del truco:

[186] - Ocultar tu aplicacion de la lista de tareas (Diálogo CTRL-ALT-DEL)



Actualizado el 16/03/2000