24

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

我想在我的新应用程序中有多个全局热键(从 Windows 中的任何位置控制应用程序),并且我在网络上找到的所有给定源/解决方案似乎都提供了一种跛行解决方案(两种解决方案仅适用于一个 g.hotkey,或者在运行时会在屏幕上产生烦人的鼠标延迟的解决方案)。

这里有没有人知道可以帮助我实现这一目标的资源,我可以从中学习?任何事物?

谢谢 !:)

4

3 回答 3

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

于 2010-04-10T00:34:38.813 回答
7

http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx

如果您不使用 .net 3.5。

于 2008-09-17T09:08:29.197 回答
5

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

于 2008-10-11T00:01:38.637 回答