可能重复:
C#应用程序中的全局键盘捕获
任何人都可以帮助我为我的应用程序设置全局键盘钩子?
我想设置热键(如Ctrl + S ),可以在不关注实际表单时使用。
保罗的帖子链接到两个答案,一个告诉你如何实现一个钩子,另一个告诉你调用RegisterHotKey。 您不需要像Ctrl + S热键那样简单地安装一个钩子,所以请改用RegisterHotKey 。
或者你可以使用C#的MessageFilter。 它应该可以在你的应用程序的任何控制/表单都有重点的时候工作。
示例代码:
class KeyboardMessageFilter : IMessageFilter { public bool PreFilterMessage(ref Message m) { if (m.Msg == ((int)Helper.WindowsMessages.WM_KEYDOWN)) { switch ((int)m.WParam) { case (int)Keys.Escape: // Do Something return true; case (int)Keys.Right: // Do Something return true; case (int)Keys.Left: // Do Something return true; } } return false; } }
而不是简单地添加一个新的MessageFilter到您的应用程序:
Application.AddMessageFilter(new KeyboardMessageFilter());