我想在我的新应用程序中有多个全局热键(从 Windows 中的任何位置控制应用程序),并且我在网络上找到的所有给定源/解决方案似乎都提供了一种跛行解决方案(两种解决方案仅适用于一个 g.hotkey,或者在运行时会在屏幕上产生烦人的鼠标延迟的解决方案)。
这里有没有人知道可以帮助我实现这一目标的资源,我可以从中学习?任何事物?
谢谢 !:)
我想在我的新应用程序中有多个全局热键(从 Windows 中的任何位置控制应用程序),并且我在网络上找到的所有给定源/解决方案似乎都提供了一种跛行解决方案(两种解决方案仅适用于一个 g.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
http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx
如果您不使用 .net 3.5。
我将通过使用 P/Invoke 为每个热键调用 RegisterHotKey() 来处理这个问题,然后使用 NativeForm(假设您使用的是 WinForms)来接收 WM_HOTKEY 消息的通知。这应该将您的大部分热键代码保存在一个地方。