解决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设置为不同的热键