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.