我有一个从主应用程序中的辅助(非 GUI)线程启动的插件 DLL。 DLL 必须从应用程序的主窗口中获取键盘事件。我正在使用 SetWindowsHookEx()
,效果很好。
但是,如果我在 Hook 处于事件状态时在 Visual Studio 中遇到断点,然后按下一个键,Visual Studio 和我的应用程序将完全锁定。这是一个问题,因为我通常使用 F 键逐步执行代码。如果我使用鼠标并从 Visual Studio 的“调试”菜单向前迈进,它工作正常。但是使用 F10 等。就是这样的习惯,我经常忘记用鼠标。
我能做些什么来恢复我的键盘快捷键吗?或者用不同的方法来听键盘?
最佳答案
这是不可避免的,调试器中断会阻止 Hook 处理通知,因此键盘会死机。在另一台机器上使用远程调试器是调试此类代码的好方法。您还需要增加 Hook 超时,以便 Windows 在调试时不会破坏 Hook ,HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout 设置。假设您使用的是 WH_KEYBOARD_LL。
关于Windows 键盘 Hook 挂起调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727327/