Einzelnen Beitrag anzeigen

Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: Hook funktioniert nicht systemweit

  Alt 19. Jul 2005, 08:43
Damit sollte es immer noch nicht funktionieren.
Bei globalen Hooks muss man den Hook-Handle in einer Weise aufheben das alle Hook-DLLs ihn benutzen koennen.
Die Hook-DLL wird naemlich allen laufenden Prozessen zugeschlagen und es ist eine Kopie der DLL.
Das Datensegment mit den globalen Variablen ist fuer jede Kopie der DLL separat.
Daraus folgt das nur genau eine Kopie den Hook-Handle hat. Entsprechend funktioniert meistens CallNextHookEx nicht.

Es gibt mehrere Methoden den Hook-Handle geeignet aufzuheben. Ein Shared Segment ist nur mit MS VC++ leicht moeglich.
Peter Vones hat aber ein Tool geschrieben, das es auch fuer Delphi moeglich macht. Siehe Borland Code Central.
Man kann den Hook-Handle aber auch in ein Memory Mapped File stecken.
  Mit Zitat antworten Zitat