【发布时间】:2014-07-06 15:52:13
【问题描述】:
要在 C# 中的控制台应用程序中注册全局热键,我使用的是此处发布的代码: https://stackoverflow.com/a/3654821/3179989
效果很好,但是当我添加多个热键时,按一个热键将导致运行所有 hotkey_pressed 事件:
HotKeyManager.RegisterHotKey(Keys.E, KeyModifiers.Control);
HotKeyManager.HotKeyPressed += new EventHandler<HotKeyEventArgs>(HotKeyManager_HotKeyPressed);
HotKeyManager.RegisterHotKey(Keys.A, KeyModifiers.Control);
HotKeyManager.HotKeyPressed += new EventHandler<HotKeyEventArgs>(HotKeyManager_HotKeyPressed2);
有人可以帮我更改代码,或者建议我在 c# 控制台中为多个全局热键提供任何其他解决方案/想法。
提前致谢
【问题讨论】:
-
这不适用于您正在使用的课程。只注册一个 HotKeyPressed-Event。在这种情况下,您可以使用简单的 if 语句检查 HotKeyEventArgs 以确定您按下了哪个热键。
-
@user1567896:感谢您的评论。你的意思是这样吗? if (e.Modifiers.ToString() + " " + e.Key.ToString()=="Control E") {\\dosomething} {
-
您不需要将密钥转换为字符串。您可以执行
e.Key == Keys.Enter之类的操作,然后检查“KeyModifiers”是否也按下了“控制键”。 -
@user1567896 谢谢,如何才能使这个答案?
-
我已经在下面发布了我的评论作为答案,所以你可以接受它;)。
标签: c# console-application global-hotkey