Hallo!
Ich habs fast genau so wie du gemacht, nur gehts bei mir nicht.
DLL:
Delphi-Quellcode:
library Project1;
uses
ShareMem, SysUtils, Controls, Classes, ExtCtrls;
{$R *.res}
var
Panel: TPanel;
procedure CreatePlugin(Owner:TComponent; Parent: TWinControl); stdcall; export;
begin
Panel := TPanel.Create(Owner);
Panel.Parent := Parent;
Panel.Align := alClient;
end;
procedure DestroyPlugin; stdcall;
begin
Panel.Free;
end;
exports
CreatePlugin, DestroyPlugin;
begin
end.
Aufruf:
Delphi-Quellcode:
unit Unit3;
interface
uses
Classes, Controls, Windows;
procedure CreatePlugin(FileName:
string; Owner:TComponent; Parent: TWinControl);
implementation
procedure CreatePlugin(FileName:
string; Owner:TComponent; Parent: TWinControl);
var
CreatePluginProc:
procedure(Owner:TComponent; Parent: TWinControl);
stdcall;
Handle: THandle;
begin
Handle := LoadLibrary(PChar(FileName));
if Handle <> 0
then
begin
@CreatePluginProc := GetProcAddress(
Handle, '
CreatePlugin');
if @CreatePluginProc <>
nil then
begin
CreatePluginProc(Owner, Parent);
end;
FreeLibrary(
Handle);
end;
end;
end.
ShareMem ist sowhol in der
DLL (siehe oben) wie auch in der
DPR der Aufrufsawendung.
Was passt hier nicht?!
Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian