Hook läuft nicht ordentlich
-
Hallo!
Ich habe folgenden Code in meiner Anwendung:static HINSTANCE hInst; static HHOOK hkb = NULL; static HHOOK hkm = NULL; LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if ((lParam < 1) && (HC_ACTION == nCode)) if (wParam == VK_RETURN) { AfxMessageBox("HALLO"); } return CallNextHookEx( hkb, nCode, wParam, lParam ); } BOOL InstallHook() { hkb = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, hInst, 0); return TRUE; } BOOL UninstallHook() { return UnhookWindowsHookEx(hkb); }
hInst habe ich mit AfxGetInstanceHandle() gefüllt und anschließend InstallHook() aufgerufen. Der Code müsste korrekt sein (eigentlich macht man das ja in einer DLL, aber ich will nicht extra eine mitschleppen), oder fehlt da noch was?
Auf was muss ich übrigens in der callback überprüfen, wenn ich STRG + ALT + RETURN haben will?
ich hoffe jemand kann mir helfen
danke
matthias
-
Aber ich glaube Hooks (zumindest systemweite) müssen in einer DLL sein!
-
So ist es!
-
hab es mittlerweile schon in eine DLL ausgelagert, Hook funktioniert jetzt!
hab noch ein problem mit den WindowsMessages: ich registriere eine mit RegisterWindowMessage() (dasselbe im Hauptprogramm) und sende diese mit PostMessage.
Das läuft aber komischerweise nicht ordentlich. Laut Spy++ wird die registrierte Message hunterte male gesendet, obwohl ich sie nur im if (VK_RETURN ==..) zweig schicke, also nur EINMAL wenn Enter gedrückt wird.Kann mir jemand einen Tipp geben, (od. vielleicht ein beispiel)?