【问题标题】:Global Keyboard Hooks (C#) [duplicate]全局键盘挂钩(C#)[重复]
【发布时间】:2010-10-23 21:06:16
【问题描述】:

可能重复:
Global keyboard capture in C# application

谁能帮我为我的应用程序设置一个全局键盘挂钩?

我想设置在不关注实际表单时可以使用的热键(如Ctrl+S)。

【问题讨论】:

    标签: c# windows hotkeys global-hotkey


    【解决方案1】:

    Paul 的帖子链接到两个答案,一个告诉您如何实现挂钩,另一个告诉您调用 RegisterHotKey。您不需要为像 Ctrl+S 热键这样简单的东西安装挂钩,因此请改为调用 RegisterHotKey

    【讨论】:

      【解决方案2】:

      或者您可以使用 C# 的 MessageFilter。当您的应用程序进程中的任何控件/表单具有焦点时,它应该可以工作。

      示例代码:

      class KeyboardMessageFilter : IMessageFilter
      {
          public bool PreFilterMessage(ref Message m)
          {
              if (m.Msg == ((int)Helper.WindowsMessages.WM_KEYDOWN))
              {
                  switch ((int)m.WParam)
                  {
                      case (int)Keys.Escape:
                          // Do Something
                          return true;
                      case (int)Keys.Right:
                          // Do Something
                          return true;
                      case (int)Keys.Left:
                          // Do Something
                          return true;
                  }
              }
      
              return false;
          }
      }
      

      而不仅仅是向您的应用程序添加一个新的 MessageFilter:

      Application.AddMessageFilter(new KeyboardMessageFilter());
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      相关资源
      最近更新 更多