【发布时间】:2011-03-29 00:08:07
【问题描述】:
我正在创建一个程序供我个人使用,它必须对某些热键做出反应。例如,当我按下 ctrl+win+z 时,它必须执行某个操作。目前,我可以使用 user32.dll 中的 GetKeyState() 来检测按键,但是我无法阻止它们被传递给活动的应用程序。在 ctrl+win+z 的情况下,我想要发生的操作会发生,但如果我使用资源管理器,例如,资源管理器也会将其读取为“撤消”。
显而易见的解决方案是使用“SetWindowsHookEx()”(也来自 user32.dll),但是每次我尝试涉及它的解决方案时(任何类似于 this site's 示例代码的东西)我都会在第一个我使用热键的时间。这是不可接受的。
我希望有人可以提供帮助。如果需要,我可以提供更多信息。
【问题讨论】:
-
即使在调试器之外,您是否也会减慢速度?
-
是的。这不仅仅是减速……它是所有程序对任何输入的完全且完全无响应的可能 4 秒。进入/退出调试器没有任何改变。
标签: c# hotkeys keyboard-hook