Si no lo has hecho ya,
échale un vistazo a esta entrada en mi blog.
Ahí se explican varias opciones, entre ellas, la que tú estás intentando aplicar a tu aplicación. en tu caso, la que está etiquetada como:
"EXE + DLL con Carga dinámica(El EXE puede ser con o sin BWRP)"
Al final tienes los ejemplos con código fuente para que puedas probar.
el que se aplica en tu caso, sería algo así:
Código Delphi
[-]
H := LoadLibrary('SUMAS.DLL');
if (H >= 32) then begin
MessageDlg('Cargada la DLL...', mtInformation, [mbOK], 0);
sum := nil;
@sum := GetProcAddress(H, 'Sumar2');
if Assigned(sum) then begin
MessageDlg('Acceso a la función SUMAR', mtInformation, [mbOK], 0);
res := Sum(4,5);
MessageDlg(Format('Resultado: %d+%d=%d',[4,5,res]), mtInformation, [mbOK], 0);
FreeLibrary(H);
end;
else begin
MessageDlg('Error, no se ha encontrado el método SUMAS2', mtError, [mbOk], 0)
end;
end
else
MessageDlg('Error, no se ha encontrado SUMAR.DLL', mtError, [mbOk], 0)
end.
Las definiciones serían estas:
Código Delphi
[-]
var
H: Thandle;
res:integer;
Sum: function(x,y:Integer):integer; stdcall;
En este caso la DLL
SUMAS.DLL sería la que tú estás programando y el método
Sumar2, el equivalente al que deberías programar tú para que se muestre el formulario que quieres.