2016-09-25 172 views
0

所以我試圖讓一個消息框出現,當用戶按下他/她的鍵盤上的按鈕使用鉤子。KeyboardProc回調函數沒有被調用?

由於沒有錯誤,所以鉤子得到正確安裝,但好像KeyboardProc回調函數沒有被調用,因爲當它被調用時應該顯示的消息框永遠不會顯示。

有沒有錯誤順便說一句,顯示出來,我在桌面應用程序中編程。

下面是關於鉤和回調函數的代碼:

LRESULT CALLBACK KeyboardProc(
int nCode, WPARAM keyState, LPARAM keyInfo) { 
    LRESULT reValue = 0; 
    MessageBox(hWnd, L"Testing", L"Test", MB_OK);//This is the msg box that isnt showing up 
    if (nCode < 0) { 
     reValue = CallNextHookEx(keyboardHook, nCode, keyState, keyInfo); 
    } 


    return reValue; 
}; 

keyboardHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, hInstance, 0); 
+0

你正在運行一個消息循環? – 1201ProgramAlarm

+0

我不需要嗎?如果是這樣的話我該怎麼做 – sharpchain

回答

1

你需要運行一個消息循環處理呼叫。從KeyboardProc callback function的描述中可以看出:「調用是通過向安裝了鉤子的線程發送消息來完成的,因此,安裝該鉤子的線程必須有消息循環。」

+0

如何讓消息循環?就像ik如何製作一個循環一樣,但是我在裏面放了什麼? – sharpchain

+0

Nvm我想出了謝謝你的幫助! – sharpchain