Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 钩子CTRL+;ALT+;桌棋类游戏_Wpf_Keyboard Hook - Fatal编程技术网

Wpf 钩子CTRL+;ALT+;桌棋类游戏

Wpf 钩子CTRL+;ALT+;桌棋类游戏,wpf,keyboard-hook,Wpf,Keyboard Hook,我已经制作了一个WPF应用程序,并且能够钩住一些windows组合。ALT+TAB被钩住了,当我的应用程序运行时,它什么也不做(如预期的那样)。问题是,当我按下CTRL+ALT+TAB时,我会得到与ALT+TAB相同的效果。 你们知道怎么把这种组合挂起来吗 编辑: 我已经成功地钩住了ALT+TAB。我确实想挂起CTRL+ALT+TAB。我试过让这一切发生 下面是生成钩子的代码: private static IntPtr KeyboardHookHandler(int nCode, IntPtr

我已经制作了一个WPF应用程序,并且能够钩住一些windows组合。ALT+TAB被钩住了,当我的应用程序运行时,它什么也不做(如预期的那样)。问题是,当我按下CTRL+ALT+TAB时,我会得到与ALT+TAB相同的效果。 你们知道怎么把这种组合挂起来吗

编辑:

我已经成功地钩住了ALT+TAB。我确实想挂起CTRL+ALT+TAB。我试过让这一切发生

下面是生成钩子的代码:

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

答案2

应该看起来像:

((lParam.flags & 33 == 33) && (lParam.flags & 22 == 22))

在本例中,32和22是任意的。您需要弄清楚ALT和CTRL实际上是什么值。他们将是1,2,4。。。16、32等,以便将它们合并为一个值。

对不起,我不明白您的问题。您想挂接“Alt+Tab”还是“Ctrl+Alt+Tab”?你试过什么了吗?谢谢你的回复。我已经试过了,但它对CTRL+ALT组合不起作用\你试过答案2了吗?是的,我试过了,没有运气。我认为这可能是因为它是一个“特殊”的组合,就像Ctrl+Alt+Del一样,这就是它不起作用的原因。
((lParam.flags & 33 == 33) && (lParam.flags & 22 == 22))