2010-08-12 106 views
0

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

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

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

+0

即使在调试器外部,你是否会减慢速度? – 2010-08-12 15:14:29

+0

是的。它不仅仅是一个缓慢的过程......所有程序对于任何输入都是完全无反应的,可能需要4秒。进/出调试器改变我所知道的任何东西。 – 2010-08-12 15:43:29

回答

2

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