Das ging mir jetzt etwas schnell. Könntest du das Vorgehen noch mal etwas detaillierter beschreiben?
Aber ich habe noch Probleme mit deinem obigen Code. Ich habe jetzt ein Interface deklariert:
Delphi-Quellcode:
unit PluginInterface;
interface
uses
uHYIntf;
type
IPluginInterface =
interface(IHYVisualPlugin)
['
{D728C6B3-837B-4D40-AE99-A8FBD71D7CE8}']
function GetVersion:
String;
end;
implementation
end.
Und dieses in meinen Plugin.dll Code eingebunden:
Delphi-Quellcode:
type
THydraVisualPlugin = class(THYVisualPlugin, IPluginInterface)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
protected
public
function GetVersion: String;
end;
Implementation:
Delphi-Quellcode:
function THydraVisualPlugin.GetVersion: String;
begin
Result := '1.0';
end;
Aber in der Host-Anwendung muss ich jetzt das machen, um auf die Interfacemethode des Plugins zu zugreifen:
Delphi-Quellcode:
procedure TMainForm.btnLoadPlgClick(Sender: TObject);
begin
with HYModuleManager1
do
begin
LoadModule(ExtractFilepath(ParamStr(0)) + '
HydraPluginLib.dll');
CreateVisualPlugin('
HydraVisualPlugin', FPluginForm);
FPluginForm.ShowParented(pnlPluginArea);
// FPlugin := FPluginForm as IPluginInterface; // löst AV aus beim Schliessen der Anwendung;
end;
end;
procedure TMainForm.Button1Click(Sender: TObject);
begin
// ShowMessage(FPlugin.GetVersion); // geht nicht, GetVersion unbekannt. FPlugin als IHYVisualPlugin deklariert
ShowMessage((FPluginForm
as IPluginInterface).GetVersion);
end;