systemweiter Hook-- nur lokale events kommen an
-
Hallo ,
ich habe das Problem, dass ich keinen systemweiten Hook hinbekomme.
Ich habe ein Projekt(v. Codeproject.com) der mit systemweiten MousEHooks arbeitet
als Vorlage genommen.DLL_EXPORT void SetMouseHook(void) { if (!bHooked) { //hhook = SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseProc, hInst, (DWORD)NULL); hhook = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProc, hInst, (DWORD)NULL); bHooked = true; } }Die alte Funktion ist ausgeklammert , und durch die neuere ersetzt worden
Dazu habe ich eigentlich nur den Rumpf der neuen HookProc eingefügtLRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam) { //return CallNextHookEx(hhook, nCode, wParam, lParam); if (nCode != HC_ACTION) { return CallNextHookEx(hhook, nCode, wParam, lParam); } return 1; }Aber bereits ein Breakpoint auf dem if-statement verrät, dass dort nur lokale
Events ankommen, keine systemweiten. Laut MSDN ist SetWindowsHookEx(..) mit den richtigen Parametern gefüllt , also HInst ist die der DLL..
Etwas merkwürdig finde es ja nur deshalb, weil die vorgefertigte HookProc funktioniert, meine nicht!Was könnte die Ursache dafür sein?