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

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

Best way to tackle global hotkey processing in c#?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How can I register a global hot key to say CTRL+SHIFT+(LETTER) using WPF and .NET 3.5?

我想在我的新应用程序中使用多个全局热键(以从Windows中的任何位置控制该应用程序),我在网上找到的所有给定的源/解决方案似乎都提供了一种简化的解决方案(两种解决方案 仅适用于一个g.hotkey,或在运行时会在屏幕上造成恼人的鼠标延迟的解决方案)。

这里有没有人知道可以帮助我实现这一目标的资源,可以向我学习?
有什么事吗

谢谢 ! :)


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

1
2
3
4
5
6
7
Hotkey hk = new Hotkey();

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

hk.Register(myForm);

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


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

如果您不使用.net 3.5。


我将通过使用P / Invoke为每个热键调用RegisterHotKey()来处理此问题,然后使用NativeForm(假设您正在使用WinForms)来通知WM_HOTKEY消息。 这应该将您的大多数热键代码放在一个地方。


推荐阅读