Zitat von
helen:
Ich brauche die andere Richtung... Ich habe eine
DLL, mit der die function
Shell_NotifyIcon gehookt wird. Jetzt muss ich aber irgendwie die an diese function übergebenen Daten an mein Programm weiterleiten, welches dann das Icon anzeigen soll.
Wie funktioniert der Transport
DLL --> Anwendung am besten?
OK, jetzt wirds klarer.
Die
DLL muss auf irgendeineweise das Ziel (=deine Anwendung) mitgeteilt bekommen.
Mir fallen im Moment 2 Alternativen ein:
- die
DLL bekommt von der Anwendung das
Handle des Hauptformulars mitgeteilt und muss diese
in einer globalen Variablen speichern.
die
DLL benutzt
SendMessage(apphandle,
WM_COPYDATA, ...) um die Daten an Hauptformular
zu schicken.
- die
DLL bekommt von der Anwendung einen Zeiger auf eine
Callback-Funktion mitgeteilt
und muss diesen in einer globalen Variablen speichern.
Sobald der Hook Shell_NotifyIcon auftritt, ruft die
DLL die Callback-Funktion auf.
Die Anwendung kopiert die Daten und macht diese sichtbar.
Diese Alternative gefällt mir am Besten, da sie klarer und einfacher ist.
Wenn deine
DLL nur von Delphi-Anwendungen geladen werden soll, käme auch eine Callback-
Methode
in Frage. (siehe auch
Nutzung einer Callback-Funktion innerhalb eines Objekts)