Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#2

AW: IMAPI2 - Wie weise ich die EventHandler zu?

  Alt 28. Mai 2017, 19:55
Am Einfachsten du lädst dir erstmal das Win32-SDK runter, denn da sind die "echten" Deklarationen drin zu finden.
Oder du nimmst dir das aus den Header-Files von Dritten (C++ lässt sich da meistens am Einfachsten übersetzen.
Manchmal/oftmals steht auch etwas in den Kommentaren, weil vielen Anderen auch etwas im MSDN fehlt (und sie keine Lust haben das im SDK zu suchen, obwohl in den Requirements fast immer erwähnt wird wo man im SDK was findet > Headerfile .h, DLL-Name oder hier die IDL)
Oder Delphi > Komponente > Komponente importieren > Typlib > nach "IMAPI" suchen.

Und ja, wenn als Callback ein Interface übergeben werden soll, dann mußt du dafür ein Objekt (Klasse) implementieren.
https://msdn.microsoft.com/en-us/lib.../aa364831.aspx

Im MSDN findet man zwar die Deklarationen der Methoden, aber die GUID (IID) der Interfaces steht da fast nie, auch kann es sein, dass das MSDN die Methoden in alphabetischer Reihenfolge auflistet, aber COM-Interface-Methoden sind indiziert und da kommt es auf die richtige Reihenfolge drauf an, bzw. die explizite Angabe der DispID.

Beispiel: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Du brauchst also erstmal die Interface-Deklaration dafür (siehe IID_DDiscMaster2Events {27354131-7F64-5B0F-8F00-5D77AFBE261E}),
dann die Implementation, also die Delphi-Klasse dahinter, welche dieses Interface implementiert,
dann davon eine "Interface"-Instanz erstellen und an die "Registerfunktion" übergeben. (IConnectionPointContainer)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat