解决C#中的全局热键处理的最佳方法?
时间:2020-03-05 18:58:17 来源:igfitidea点击:
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://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx
如果我们不使用.net 3.5.
回答
我将通过使用P / Invoke为每个热键调用RegisterHotKey()来处理此问题,然后使用NativeForm(假设我们正在使用WinForms)来通知WM_HOTKEY消息。这应该将大多数热键代码放在一个地方。
回答
我找到的最好的解决方案是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设置为不同的热键