Hallo zusammen,
ich werde noch wahnsinnig mit folgendem Problem:
Eine Kommunikation mit einer anderen Anwendung soll über COM laufen. Also habe ich brav ein TLB erzeugt. Nun kann ich per CreateComObject auch die eigentliche Schnittstelle (interface) aufrufen und grob verwenden.
Jetzt soll aber auch auf Ereignisse der Fremdanwendung reagiert werden. Normalerweise sind die ja z.B. bei Forms Teil des "Haupt"-Objekts und ich muss der Ereignis-procedure meine eigene procedure zuweisen - nur eben hier nicht. Folgender Code steht statt dessen in der TLB zur Verfügung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| IApplicationEvents = dispinterface ['{blabla}'] procedure OnFinished(const ID: WideString); dispid 1; procedure OnClose; dispid 3; procedure OnMinimized; dispid 5; end; |
Aus Beiträgen im Forum und bei Google-Suche habe ich gefunden, dass es in etwa so gehen sollte: Eine Klasse definieren, die von TObjekt und IApplicationEvents abgeleitet ist, die Ereignisse so übernehmen und ausprogrammieren. Danach ein Create auf die Klasse und fertig.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| TTest = class(TObject, IApplicationEvents) public procedure OnFinished(const ID: WideString); procedure OnClose; procedure OnMinimized; end; |
Bevor ich jetzt mit TTest.Create usw. weitermachen kann, scheitert es bereits hier im Compiler: "Interface-Typ benötigt". Die Hilfe zu diesem Fehler hat mir jetzt auch nicht weitergeholfen.
Leider muss ich Euch jetzt damit belästigen, da ich mit meinem Latein am Ende bin. Wer kann mir an dieser Stelle weiterhelfen?
Danke schon einmal im voraus für jede Hilfe!
Grüße
Markus