Hook läuft im falschen Adressraum
-
Hallo,
ich wurde heute geschockt, als ich feststellte, dass mein Hook automatisch
beendet wird, sobald ich die Anwending schließe, die den Hook installiert hat.
Da es ein globaler Hook ist, sollte dieser eigentlich weiter laufen...
Nun habe ich gelesen, das es Hooks gibt, die wieder im Kontext des aufrufenden Programms geladen werden...
z.B. erster Absatz hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Windowing/Hooks/HookReference/HookFunctions/LowLevelMouseProc.asp
Ich verstehe nicht ganz was da steht, bzw. was das bedeutet?
Kann mir jemand weiterhelfen?Bisher habe ich meinen Hook auf folgende Weise installiert:
- DLL erzeugen, die eine Funktion "Install" exportiert
- "Install" wird von einer zweiten Funktion aufgerufen
- in "Install" steht der Aufruf "SetWindowsHookEx"Ich habe nun aus lauter Verzweifelung versucht den Hook auf eine andere Art zu installieren:
- in der ausführbahren Applikation wir mit LoadLibrary und GetProcAdress der Hook direkt installiert.
Das sieht dann so aus:private: System::Void install_button_Click(System::Object^ sender, System::EventArgs^ e) { HOOKPROC hkprcSysMsg; HINSTANCE hinstDLL; HHOOK hhookSysMsg; //hinstDLL = LoadLibrary((LPCTSTR) "C:\Documents and Settings\Michael Worobcuk\My Documents\Visual Studio 2005\Projects\Maus Hook_test\Hook_Form\Hook.dll"); if (hinstDLL==0) { OutputDebugString("nicht geladen"); } else { OutputDebugString("geladen"); hkprcSysMsg = (HOOKPROC)GetProcAddress(hinstDLL,"MouseHookProc"); } //hhookSysMsg = SetWindowsHookEx(WH_SYSMSGFILTER,hkprcSysMsg,hinstDLL,0); }Leider gibt es dann einen Linkler Fehler, den ich nicht verstehe:
Error 3 fatal error LNK1000: Internal error during IMAGE::BuildImage Hook_FormIch währe über Ratschläge sehr dankbar
