解决c#中全局热键处理的最佳方法?

24 c# global hotkeys

可能重复:
如何使用WPF和.NET 3.5注册全局热键以表示CTRL + SHIFT +(LETTER)?

我希望在我的新应用程序中有多个全局热键(从Windows中的任何位置控制应用程序),我在网络上找到的所有给定的源/解决方案似乎提供了一种跛行的解决方案(或者解决方案)仅适用于一个g.hotkey,或运行时在屏幕上创建令人讨厌的鼠标延迟的解决方案).

这里有没有人知道可以帮助我实现这一目标的资源,我可以从中学到什么?什么?

谢谢 !:)

Oha*_*der 40

我找到的最好的解决方案是http://bloggablea.wordpress.com/2007/05/01/global-hotkeys-with-net/

Hotkey hk = new Hotkey();

hk.KeyCode = Keys.1;
hk.Windows = true;
hk.Pressed += delegate { Console.WriteLine("Windows+1 pressed!"); };

hk.Register(myForm); 
Run Code Online (Sandbox Code Playgroud)

请注意如何将不同的lambda设置为不同的热键


aru*_*rul 7

http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx

如果你没有使用.net 3.5.

  • -1键盘挂钩不是全局热键的好选择. (2认同)
  • 没有其他内容符合规范:“从 Windows 中的任何位置控制应用程序”,因此请提供更好的见解 [原文如此] 或删除您的评论。 (2认同)

And*_*ndy 5

我会通过使用P/Invoke为每个热键调用RegisterHotKey(),然后使用NativeForm(假设您使用WinForms)来通知WM_HOTKEY消息.这应该将您的大多数热键代码保存在一个地方.