钩CTRL + ALT + TAB
我做了一个WPF应用程序,我能够钩住一些窗口组合。 ALT + TAB被挂钩,它在我的应用程序运行时没有任何作用(如预期的那样)。问题是,当我按下CTRL + ALT + TAB 我得到相同的效果ALT + TAB 。 你们有什么想法如何挂钩这种组合?钩CTRL + ALT + TAB
编辑:
我已经成功地迷上ALT + TAB 。我确实想钩CTRL + ALT + TAB。我已经试过这个project example来做到这一点。
下面是使钩代码:
private static IntPtr KeyboardHookHandler(int nCode, IntPtr wParam,
ref KBHookStruct lParam){
if (nCode == 0)
{
if (((lParam.vkCode == 0x09) && (lParam.flags == 0x20)) || // Alt+Tab
((lParam.vkCode == 0x1B) && (lParam.flags == 0x20)) || // Alt+Esc
((lParam.vkCode == 0x1B) && (lParam.flags == 0x00)) || // Ctrl+Esc
((lParam.vkCode == 0x5B) && (lParam.flags == 0x01)) || // Left Windows Key
((lParam.vkCode == 0x5C) && (lParam.flags == 0x01)) || // Right Windows Key
((lParam.vkCode == 0x73) && (lParam.flags == 0x20)) || // Alt+F4
((lParam.vkCode == 0x20) && (lParam.flags == 0x20))) // Alt+Space
{
return new IntPtr(1);
}
}
return CallNextHookEx(hookPtr, nCode, wParam, ref lParam);}
回答1
你可以尝试像它下面的工作CTRL + SHIFT + TAB和CTRL + TAB
private void HandleKeyDownEvent(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && (Keyboard.Modifiers & (ModifierKeys.Control | ModifierKeys.Shift)) == (ModifierKeys.Control | ModifierKeys.Shift))
{
MessageBox.Show("CTRL + SHIFT + TAB trapped");
}
if (e.Key == Key.Tab && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
MessageBox.Show("CTRL + TAB trapped");
}
}
答案2
应该是这个样子:
((lParam.flags & 33 == 33) && (lParam.flags & 22 == 22))
32和22在这个例子中随意。你需要弄清楚ALT和CTRL实际是什么值。它们将是1,2,4 ... 16,32等,以便它们可以被合并成单个值。
谢谢你的回复。我已经尝试过,但它不适用于CTRL + ALT组合。 :\ –
您是否尝试过答案2? – Nazmul
是的,我有没有运气。我认为这可能是因为它是一个“特殊”组合,就像Ctrl + Alt + Del,这就是为什么它不起作用。 –
对不起,我不明白你的问题。你想勾选“Alt + Tab”或“Ctrl + Alt + Tab”?你有尝试过什么吗? – Nazmul
显示您的代码! – giammin