![]() |
Kommunikation zwischen Hauptanwendung und Plugin
Hallo zusammen,
ich habe den ersten Teil von ![]() ![]() Wie und was muss ich machen, damit mein Vorhaben funktioniert ? |
Re: Kommunikation zwischen Hauptanwendung und Plugin
*push* Hat keiner eine Idee für mich ?? *push* :spin:
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Implemnetiere eine Funktion dafür im Plugin und exportiere diese
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Ich probiere es derzeit so. In meiner Hauptanwendung habe ich folgendes drinstehen :
Delphi-Quellcode:
Die Unit, die ich in der DLL und in der Hauptanwendung mit einfüge hat den folgenden Teil :
type
// // Declaration of class for the interface IApplication // IApp = interface(IInterface) function GetTheCaption:string; end; TAppInf = class(TInterfacedObject, IApp) public function GetTheCaption: String; end; ... implementation ... { TAppInt } function TAppInf.GetTheCaption: string; begin result := 'Das ist ein Test für ein Interface'; end;
Delphi-Quellcode:
In der DLL selber mache ich dann folgendes :
IApp = interface(IInterface) ['{EE10386E-F8B8-44A1-8A88-D809B4EA1964}']
function GetTheCaption:string; end;
Delphi-Quellcode:
Was mache ich falsch ? Oder habe ich das Prinzip der Interfaces noch nicht verstanden ?
var
PlgApp: IApp ... procedure TPlugIn01.Execute; begin Form1 := TForm1.Create(nil); Form1.Label1.Caption := PlgApp.GetTheCaption; Form1.Show; end; |
Re: Kommunikation zwischen Hauptanwendung und Plugin
Hauptprogramm und Dll haben eigene Instanzen der VCL.
Deshalb Funktion für Ausgabe der Dll vom Hauptprogramm aufrufen. |
Re: Kommunikation zwischen Hauptanwendung und Plugin
Zitat:
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Dlls unterstützen ja keine Objekte im Interface. Wie verbindest du die beiden Objekte (Hauptprogramm/Dll)?
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Zitat:
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Über diese Klasse funktioniert es, es existieren aber verschiedene Objekte (eines im Hauptprogramme und jeweils ein Proxy-Objekt im Plugin)
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Im Anhang die DLL und die Unit die mit den Deklarationen. Die Deklarationen im Hauptprogramm wie in Beitrag 4. |
Re: Kommunikation zwischen Hauptanwendung und Plugin
Du übergibst der DLL doch gar kein Interface.
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Zitat:
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Als Property wovon? Du solltest deine TLoadPlugin-Definition um einen Parameter für das Interface erweitern.
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Zitat:
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Aus dem Hauptprogramm rufst du doch die vom Plugin exportierte Funktion LoadPlugin auf. Das ist die Gelegenheit, um dem Plugin das Interface zu übergeben.
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Zitat:
Delphi-Quellcode:
var
PlgApp : IApp; {...} Form1.Label1.Caption := PlgApp.GetTheCaption; |
Re: Kommunikation zwischen Hauptanwendung und Plugin
Zitat:
|
Re: Kommunikation zwischen Hauptanwendung und Plugin
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Delphi-Quellcode:
procedure TMainForm.ExecutePlugIn(Sender: TObject);
begin if Sender = nil then Exit; if not (Sender is TMenuItem) then Exit; if FPlugIns[TMenuItem(Sender).Tag].PlugIn <> nil then FPlugIns[TMenuItem(Sender).Tag].PlugIn.Execute; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz