C# 如何挂接Ctrl-Alt选项卡?

C# 如何挂接Ctrl-Alt选项卡?,c#,winapi,keyboard,hook,low-level,C#,Winapi,Keyboard,Hook,Low Level,我试图在我的程序中挂接键盘,但有些事情我无法完成。下面的方法是我在课堂上处理某些组合键的最重要部分。所有这些都可以工作,但我还想挂起Ctrl-Alt选项卡。我花了好几个小时想知道该怎么办,但我两手空空。我怎样才能勾住这个组合呢 更多信息可在此处找到: 保罗·迪拉西亚(Paul DiLascia)的这篇文章可能值得您一看,他展示了如何捕获Ctrl+Alt+Del组合键。CodeProject和上有一个可用于.NET framework的版本 希望这有帮助, 顺致敬意, Tom。您应该对win3

我试图在我的程序中挂接键盘,但有些事情我无法完成。下面的方法是我在课堂上处理某些组合键的最重要部分。所有这些都可以工作,但我还想挂起Ctrl-Alt选项卡。我花了好几个小时想知道该怎么办,但我两手空空。我怎样才能勾住这个组合呢

更多信息可在此处找到:


保罗·迪拉西亚(Paul DiLascia)的这篇文章可能值得您一看,他展示了如何捕获Ctrl+Alt+Del组合键。CodeProject和上有一个可用于.NET framework的版本

希望这有帮助, 顺致敬意,
Tom。

您应该对win32消息泵进行子类化。

也许您会从这个VC6项目中得到一些想法,您正在正确地捕获键,但是您需要在lParam.flags上执行按位AND操作,以确定是否按下了多个修改器键

这是我脑子里想不出来的,但我认为代码是这样的:

(lParam.flags == 32)
应该看起来像:

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

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

LCTRL在按下时有标志0,释放时有标志128。按下RCTRL时有标志1,释放时有标志129。系统没有给我与键对应的三个标志的总和。我最多只能夹两把钥匙。
((lParam.flags & 32 == 32) && (lParam.flags & 16 == 16))