【问题标题】:Multiple global hotkeys in C# console applicationC# 控制台应用程序中的多个全局热键
【发布时间】: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


【解决方案1】:

这不适用于您正在使用的课程。

只注册一个 HotKeyPressed-Event。在这种情况下,您可以使用简单的 if 语句检查HotKeyEventArgs,以确定您按下了哪个热键。

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2012-08-02
    • 2019-11-22
    • 2010-09-23
    • 2013-10-28
    • 1970-01-01
    • 2014-01-17
    • 2015-08-23
    相关资源
    最近更新 更多