我有一个.net C#winforms应用程序,我需要添加热键支持,但我想要的不仅仅是标准的RegisterHotKey
函数,我希望能够支持像 ctrl 这样的热键 - ctrl (就像在Google桌面中一样)。
请指导我如何实现这一目标。
编辑:
你做得不对。 即使我的应用程序没有聚焦,我希望热键能够正常工作,例如最小化到托盘。
答案 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的多个版本加载到一个进程中,这比以前更糟糕,但仍然不满意。