我試圖在我的程序中鉤住鍵盤,但有些東西是我無法完成的。下面的方法是我班中處理某些組合鍵的最重要的部分。所有這些工作,但我也想鉤住Ctrl-Alt-Tab。我花了好幾個小時試圖弄清楚該怎麼做,但我空手而歸。我怎樣才能鉤住這個組合呢?如何掛鉤Ctrl-Alt-Tab?
更多信息可以在這裏找到:
http://msdn.microsoft.com/en-us/library/ms644967(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms927178.aspx
private static IntPtr KeyboardHookHandler(int nCode, IntPtr wParam, KBDLLHookStruct lParam)
{
if (nCode == 0)
{
if (((lParam.flags == 32) && (lParam.vkCode == 0x09)) || // Alt+Tab
((lParam.flags == 32) && (lParam.vkCode == 0x1B)) || // Alt+Esc
((lParam.flags == 0) && (lParam.vkCode == 0x1B)) || // Ctrl+Esc
((lParam.flags == 1) && (lParam.vkCode == 0x5B)) || // Left Windows Key
((lParam.flags == 1) && (lParam.vkCode == 0x5C)) || // Right Windows Key
((lParam.flags == 32) && (lParam.vkCode == 0x73)) || // Alt+F4
((lParam.flags == 32) && (lParam.vkCode == 0x20))) // Alt+Space
{
return new IntPtr(1);
}
}
return CallNextHookEx(hookPtr, nCode, wParam, lParam);
}
LCTRL在按下時標記爲0,釋放時爲128。 RCTRL在按下時標記1,在釋放時爲129。系統不會給我與鍵對應的三個標誌的總和。我最多隻能捕捉兩把鑰匙。 – user246392 2010-01-09 16:19:13