Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Message wird nicht gesendet bei globalem Hook

  Alt 11. Aug 2006, 17:17
@DGL-Luke: Nein, das ist kein Problem vom Delphimemorymanager. Wie bereits geschrieben wird die DLL bei einem Aufruf von SetWindowsHookEx in jedem Prozess neu geladen, so als würde in dem Prozess jemand einen lokalen Hook mit SetWindowsHookEx starten. Ein globaler Hook ist sozusagen ein Rundruf das so ziemlich jeder einen Lokalen Hook auf die Adresse-X in der DLL-X setzen soll. Dabei laden dann die Prozesse die DLL und setzen eben einen lokalen Hook auf die Funktion.

Einziges was es in Delphi nicht gibt (was in C++ wohl einfacher gelöst ist) das es da gemeinsam genutzen Speicher ohne den Umweg über mmf's gibt.

Das ganze ist aber auch logisch, denn wenn die Messages von anderen Prozessen an die Hook-Procedure des geinen Prozesses übergeben werden würden wären die Adressen welche sich teilweise in WParam und LParam befinden völlig nutzlos da die Adressen nur im anderen Prozess gültig sind (also in dem Prozess wo sie her kommen).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat