ctrl热键我的应用程序

时间:2010-09-24 22:15:13

标签: c# .net winforms winapi hotkeys

我有一个.net C#winforms应用程序,我需要添加热键支持,但我想要的不仅仅是标准的RegisterHotKey函数,我希望能够支持像 ctrl 这样的热键 - ctrl (就像在Google桌面中一样)。

请指导我如何实现这一目标。

编辑:

你做得不对。 即使我的应用程序没有聚焦,我希望热键能够正常工作,例如最小化到托盘。

3 个答案:

答案 0 :(得分:0)

您可以通过轮询Console.KeyAvailable然后使用Console.ReadKey进行阅读来获取单独的密钥(例如ctrl键),但这不会告诉您何时让密钥启动。您可能必须捕获WM_KEYDOWN消息并在每个键上调用GetAsyncKeyState,以便您可以确定哪些特殊键(control,shift,alt等)当前已关闭。

至少,这是我记得在写游戏时所做的事情。

答案 1 :(得分:0)

如果您正在使用winforms和c#,那么使用keydown或keypress事件可能会更好。并在表单上的模块级变量中记录先前的按键。 然后当用户按下ctl时会触发按键事件,然后查看按键的上一个值,如果这也是ctl,那么你找到了你正在寻找的按键组合。

答案 2 :(得分:0)

您可能需要安装keyboard hook。现在.NET 4.0支持将CLR的多个版本加载到一个进程中,这比以前更糟糕,但仍然不满意。