Estimados compañeros de Delphi,
En un programa que estoy haciendo quiero que al copiarle archivos DLL en su mismo directorio, al arrancar compruebe si estos son plug-ins para el mismo. Creé un nuevo proyecto de prueba a parte, y coloqué un TButton y un TListBox para buscar las DLLs (cosa que funcionó). Aquí está el código:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
encontrado: integer;
archivo: TSearchRec;
begin
lista.clear;
lista.Items.BeginUpdate;
encontrado:=FindFirst(ExtractFilePath(ParamStr(0)))+'*.dll',faAnyFile,archivo);
while encontrado=0 do
begin
Lista.Items.Add(ExtractFileName(archivo.Name));
encontrado:=FindNext(archivo);
end;
FindClose(archivo);
lista.Items.EndUpdate;
end;
Informándome he conseguido acceder a las funciones de cualquier DLL hecha por mí. Por ejemplo, todas las DLL que son plugins para ese programa tienen una función llamada GetProgramName, que devulve una cierta cadena. Si la cadena no es válida (o no existe esa función), entonces esa DLL no es un plugin para mi programa.
Código Delphi
[-]
function GetProgramName: string; stdcall; external 'plugin1.dll' name 'GetProgramName';
El problema que tengo es que no sé cómo acceder a las funciones de una DLL cuyo nombre de archivo desconozco (las que me aparecen en la lista del principio). ¿Alguien me puede ayudar?
Gracias.