以下片段用於在用戶鍵入一個鍵時顯示消息。即使重點不在應用程序上。但是下面的代碼似乎有問題。它不會調用在窗口中掛鉤鏈中註冊的函數。我想這個問題是HINSTANCE hInst
。我應該如何修改下面的代碼,以便在用戶點擊某個鍵時能夠看到該消息。當用戶點擊一個鍵時顯示一條消息
// Global Variables
static HHOOK handleKeyboardHook = NULL;
HINSTANCE hInst = NULL;
void TestKeys_setWinHook // i call this function to activate the keyboard hook
(...) {
hInst = GetModuleHandle(NULL);
handleKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInst, 0); // LowLevelKeyboardProc should be put in the hook chain by the windows,but till now it doesn't do so.
printf("Inside function setWinHook !");
}
// the following function should be called when the user taps a key.
static LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
printf("You pressed a key !\n");
return CallNextHookEx(handleKeyboardHook, nCode, wParam, lParam);
}
但Windows不會調用函數LowLevelKeyboardProc
。我不明白原因,但我相信問題出在鉤子函數中的hInst
。我如何初始化它?
直到現在,我看到輸出Inside function setWinHook !
差不多相同http://stackoverflow.com/questions/10731172/cannot-see-the-message-when-user-presses-the-key – Deanna
@Deanna是的!在看到這個問題後開始了這項工作! –