全局键盘挂钩(C#)

可能重复:
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());