2009-06-10 47 views
0

我添加了一個我不控制的對話框的鍵盤鉤子(它在封閉源庫中運行它自己的DialogProc函數)。我能夠捕捉關鍵筆劃,但關鍵筆劃總是發送對話框。這會導致錯誤的嘟嘟聲以及一些奇怪的行爲。抑制擊鍵到對話框

安裝鉤子:

hKeyHook=SetWindowsHookEx(WH_KEYBOARD, KeyHookProc, hInst, GetCurrentThreadId()); 

鉤子函數:

LRESULT CALLBACK KeyHookProc(int code, WPARAM wParam, LPARAM lParam) 
{ 
    if(!(lParam & 0x80000000)) 
    { 
     if(wParam == VK_mykey) 
     { 
      // Do my stuff 

      return 0; // Don't continue the hook chain 
     } 
    } 

    // Continue with next hook 
    return CallNextHookEx(hKeyHook, code, wParam, lParam); 
} 

解除鉤:

UnhookWindowsHookEx(hKeyHook); 

有沒有辦法阻止被髮送到擊鍵在對話框中有重點的控件?

回答

3

您可以通過替換其GWLP_WNDPROC(請參閱remarks section of this page)值來對有問題的控件進行子類化。基本的概念是你過濾出WM_KEY*消息,然後將剩下的消息傳遞給原來的WndProc。

0

if(!(lParam & 0x80000000)) 

按下該鍵時,是真實的。當它被釋放時,你做沒有什麼

KeyHookProc在按鍵被按下或釋放時被調用。

0

嗯。第一點你確定你希望在這裏使用你自己的進程線程ID。該對話框是否在您的流程線程中?

+0

在這種情況下,它實際上是我的線程,但我同意它不明確的問題。 – 2009-06-10 19:42:53

相關問題