Я пытаюсь подключить клавиатуру в своей программе, но есть что-то, чего я не могу выполнить. Нижеприведенный метод является наиболее важной частью моего класса, где я обрабатываю определенные комбинации клавиш. Все они работают, но я также хочу подключить 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