Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Message wird nicht gesendet bei globalem Hook

  Alt 11. Aug 2006, 17:09
Genau aus dem Grund nimmt der Author mmf's.

Wenn du einen Hook "installierst" wird die DLL in die verschiedensten Prozesse geladen. Beim laden der DLL in den verschiedenen Prozessen ruft jedoch niemand deine Methode InstallHooks auf. Die Methode InstallHooks wird einzig in der DLL-Instanz geladen welche du in deinem Programm lädst. Wenn deine DLL als in der Explorer.exe geladen wird, wird dort sozusagen nur ein LoadLibrary gemacht und ein lokaler Hook auf deine DLL-Procedure. Es wird bei einem SetWindowsHook-Aufruf also nix anderes gemacht als
- Lade in so ziemlich jedem Prozess die DLL "DeineDLL.DLL" und schleife alle Nachrichten durch die Funktion MouseHookProc der DLL.
Es wird also darin nirgends deine Variable GlobalHooksFormHandle gesetzt, das geschieht einzug und allein in der DLL instanz die du in deinem Programm lädst.

Dir scheint also das Verständnis zu fählen was genau bei einem hook-setzen passiert.

Dein Code kommt ungefähr dem gleich:
Du hast einen Notizblock und schreibst eine Telefonnummer drauf.
Dann sagst du all deinen Freunden Sie sollen sich auch einen Notizblock vom Stabel nehmen und alles was passiert sollen sie telefonisch an die auf dem Block vermerkte Nummer übermitteln. Das Problem: Die telefonnummer steht nur auf deinem Block.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat