我试图在我的程序中钩住键盘,但有些东西是我无法完成的。下面的方法是我班中处理某些组合键的最重要的部分。所有这些工作,但我也想钩住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