最好的方法来解决在C#中的全球热键处理?

可能重复:
如何使用WPF和.NET 3.5注册一个全局热键来说CTRL + SHIFT +(LETTER)?

我想在我的新应用程序中有多个全局热键(从Windows的任何位置控制应用程序),并且我在网上find的所有给定源代码或解决scheme似乎都提供了一种跛行解决scheme(解决scheme仅适用于一个g.hotkey,或者在运行时在屏幕上创build恼人的鼠标延迟的解决scheme)。

有没有人在这里知道一个资源,可以帮助我实现这个,我可以学习? 什么?

谢谢 ! 🙂

我find的最好的解决scheme是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); 

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

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