C#全局热键(没有常用的全局钩子)

时间:2010-08-12 15:12:12

标签: c# hotkeys keyboard-hook

我正在创建一个供个人使用的程序,必须对某些热键做出反应。例如,当我按ctrl + win + z时,它必须执行某个动作。目前,我可以使用user32.dll中的GetKeyState()来检测按键,但是我无法阻止它们被传递给活动应用程序。在ctrl + win + z的情况下,我想要发生的动作发生,但是如果我使用资源管理器,例如,资源管理器也会将其视为“撤消”。

显而易见的解决方案是使用“SetWindowsHookEx()”(也来自user32.dll),但每次我尝试一个涉及它的解决方案(任何类似于this site's示例代码的代码)时,我都会大幅减速我第一次使用热键。这是不可接受的。

我希望有人可以提供帮助。如果需要,我可以提供更多信息。

1 个答案:

答案 0 :(得分:2)

您是否尝试过RegisterHotKey功能?它比使用Windows钩子更容易使用。