我找到的最好的解决方案是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设置为不同的热键
我找到的最好的解决方案是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设置为不同的热键
http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx
如果你没有使用.net 3.5.
我会通过使用P/Invoke为每个热键调用RegisterHotKey(),然后使用NativeForm(假设您使用WinForms)来通知WM_HOTKEY消息.这应该将您的大多数热键代码保存在一个地方.