erst mal meine dateien :
die Library :
Delphi-Quellcode:
library Kundendaten;
uses
SysUtils,
Classes,
forms,
kMain
in '
kMain.pas'
{KundendatenF};
{$E dll}
{$R *.res}
Procedure PluginMain(Befehl : PChar; Parameter : Pointer);
stdcall;
begin
KundenDatenF := TKundenDatenF.Create(Application);
try
KundenDatenF.Show;
finally
KundenDatenF.Release;
end;
end;
exports
PluginMain;
begin
end.
so nun die KMain.pas :
Delphi-Quellcode:
unit kMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TKundendatenF =
class(TForm)
Button1 : TButton;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
KundendatenF: TKundendatenF;
implementation
{$R *.dfm}
end.
das sind die Daten gewesen aus der
DLL.
Nun mache ich in der Hauptanwendung Folgendes :
ich habe mir eine
unit Plugins angelegt die so aussieht :
Delphi-Quellcode:
unit plugins;
interface
uses SysUtils, windows, Dialogs, forms;
type TPlugin =
procedure(Befehl : PChar; Parameter : Pointer);
stdcall;
procedure PluginMain(Befehl : PChar; Parameter : Pointer);
implementation
procedure PluginMain(Befehl : PChar; Parameter : Pointer);
var Plugin: TPlugin;
Handle: THandle;
begin
Handle:=LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'
..\lib\kundendaten.dll'));
if Handle <> 0
then begin
@Plugin := GetProcAddress(
Handle, '
PluginMain');
if @Plugin <>
nil then begin
Plugin(Befehl, Parameter);
end;
FreeLibrary(
Handle);
end;
end;
end.
und das Hauptfenster in der anwendung hat folgendes aussehen :
Delphi-Quellcode:
unit HostFenster;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
uses plugins;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
PluginMain('
',
nil);
end;
end.
jetzt sobald ich auf den Button1 klicke um das Plugin zu starten bekome ich folgenden Fehler (Keine Fehlermeldung)
Er erstellt das Formular. und das Verschwindet sogleich wieder.. Kann also nicht daran arbeiten.
Kann mir jemand sagen warum ?
gruss Sascha