Fehler mit Keyboard-Hook
-
Hallo,
habe folgenden Code zur Deaktivierung bestimmter Tasten:#define _WIN32_WINNT 0x0400 #include <Windows.h> HHOOK hhkLowLevelKybd; ... int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, LPSTR, int) { // Install the low-level keyboard & mouse hooks HHOOK hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hinstExe, 0); ....Erhalte aber folgende Fehlermeldung:
E2034 Konvertierung von 'long (__stdcall *)(int,unsigned int,long)' nach 'int (__stdcall *)()' nicht möglich
Keine Übereinstimmung des Typs beim Parameter 'lpfn' ('int (__stdcall *)()' erwartet, 'long (__stdcall *)(int,unsigned int,long)' erhalten)Kann mir jemand helfen?
-
Wie sieht denn Deine Funktion "LowLevelKeyboardProc" aus?
-
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { BOOL fEatKeystroke = FALSE; if (nCode == HC_ACTION) { switch (wParam) { case WM_KEYDOWN: case WM_SYSKEYDOWN: case WM_KEYUP: case WM_SYSKEYUP: PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam; fEatKeystroke = ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) || ((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0)) || ((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0)); break; } } return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam)); }
-
Benutze
#define STRICT
bzw. füge STRICT in die Projektoptionen ein.
-
Und Du hast auch im H-File die gleiche Definition?
-
Habe den obigen Code zu LRESULT CALLBACK LowLevelKeyboardProc geändert.
Funzt auch nicht mit STRICT.
In einem H-File habe ich nichts dazu stehen!
Lediglich in einer cpp des Hauptformulars habe ich unter FormDestroy stehen:UnhookWindowsHookEx(hhkLowLevelKybd);//Deinstall the low-level keyboard & mouse hooks
-
STRICT muss vor
#include <winuser.h>
definiert werden.
-
Habe diese Lösung jetzt benutzt, funzt!!!
http://www.c-plusplus.net/forum/viewtopic-var-t-is-87816-and-highlight-is-strg+deaktivieren.html
Danke!