可能重复:
How can I register a global hot key to say CTRL+SHIFT+(LETTER) using WPF and .NET 3.5?
我想在我的新应用程序中拥有多个全局热键(从Windows中的任何位置控制应用程序),我在网络上找到的所有给定的源/解决方案似乎都提供了一种跛行的解决方案(或者只针对一个g.hotkey的解决方案,或者在运行时在屏幕上创建恼人的鼠标延迟的解决方案)。
这里有没有人知道可以帮助我实现这一目标的资源,我可以从中学到什么? 什么?
谢谢! :)
答案 0 :(得分: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);
请注意如何将不同的lambda设置为不同的热键
答案 1 :(得分:7)
http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx
如果你没有使用.net 3.5。
答案 2 :(得分:5)
我会通过使用P / Invoke为每个热键调用RegisterHotKey()来处理这个问题,然后使用NativeForm(假设您正在使用WinForms)来通知WM_HOTKEY消息。这应该将大多数热键代码保存在一个地方。