gpt4 book ai didi

c# - 如何 Hook Ctrl-Alt-Tab?

转载 作者:行者123 更新时间:2023-11-30 17:23:41 26 4
gpt4 key购买 nike

我正在尝试在我的程序中连接键盘,但有些事情我无法完成。下面的方法是我处理某些组合键的类(class)中最重要的部分。所有这些都有效,但我还想 Hook Ctrl-Alt-Tab。我花了几个小时试图弄清楚该怎么做,但我空手而归。我怎样才能同时 Hook 这个组合?

更多信息可以在这里找到:
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);
}

最佳答案

Worlds,您正确地捕获了键,但您需要对 lParam.flags 执行按位与操作以确定是否按下了多个修改键。

这超出了我的脑海,但我认为代码如下所示:

(lParam.flags == 32)

应该看起来像:

((lParam.flags & 32 == 32) && (lParam.flags & 16 == 16))

32 和 16 在这个例子中是任意的。您需要弄清楚 ALT 和 CTRL 的实际值是什么。它们将是 1、2、4 ... 16、32 等,以便它们可以通过“或”运算组合成一个值。

关于c# - 如何 Hook Ctrl-Alt-Tab?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2033500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com