Das ist garnicht so einfach. In der
DLL muss folgendes stehen :
Delphi-Quellcode:
library config;
uses
SysUtils,
Classes,
Windows,
Forms,
Controls,
ExtCtrls,
ConfigurationMainUnit
in '
ConfigurationMainUnit.pas'
{ConfigurationMain},
dll_unit
in '
dll_unit.pas';
{$R *.res}
procedure configuration(appHandle: THandle);
stdcall;
begin
if appHandle = 0
then apphandle := GetActiveWindow;
Application.Handle := appHandle;
try
with TConfigurationMain.Create(Application)
Do
try
ShowModal
finally
Free;
end
except
On E:
Exception Do Application.HandleException(E);
end;
Application.Handle := 0;
end;
exports
configuration;
begin
end.
Die ConfigurationMainUnit.pas ist eine ganz einfache
Unit mit einem Formular. Dieses kannst Du ganz normal händeln, wie jedes andere Formular auch.
In der DLLunit.pas habe ich dann folgendes stehen :
Delphi-Quellcode:
unit dll_unit;
interface
procedure configuration(appHandle: THandle);
stdcall;
implementation
procedure configuration(appHandle: THandle);
stdcall;
external '
config.dll';
end.
Und in der MainForm.Unit habe ich dann folgendes stehen um das Formualar aus der ConfigurationMainUnit.pas aufzurufen :
Delphi-Quellcode:
uses
dll_unit;
type
TConfigWindow = procedure(appHandle: THandle); stdcall;
procedure TMainControl.Configuration_btnClick(Sender: TObject);
var
hDLL : THandle;
ConfigWindow : TConfigWindow;
begin
hDLL := LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'config.dll'));
if hDLL <> 0 then begin
try
ConfigWindow := GetProcAddress(hDLL, 'configuration');
ConfigWindow(Application.Handle);
finally
FreeLibrary(hDLL);
end;
end;
end;
end.
So habe ich das gemacht mal für ein Programm. Ich hoffe es hilft dir weiter.