Windows键盘挂钩挂起调试器

时间:2012-03-15 20:06:18

标签: windows visual-studio debugging keyboard hook

我有一个插件DLL,它是从主应用程序中的辅助(非GUI)线程启动的。 DLL必须从应用程序的主窗口中获取键盘事件。我正在使用SetWindowsHookEx(),效果很好。

但是,如果我在钩子处于活动状态时在Visual Studio中遇到断点,然后按一个键,Visual Studio和我的应用程序将完全锁定。这是一个问题,因为我通常使用F键来逐步执行代码。如果我使用鼠标并从Visual Studio的调试菜单前进,它可以正常工作。但是使用F10等。是这样的习惯,我通常忘记使用鼠标。

我可以做些什么来恢复我的键盘快捷键?或者另一种听键盘的方法?

1 个答案:

答案 0 :(得分:4)

这是不可避免的,调试器中断会阻止挂钩处理通知,因此键盘会死机。在另一台机器上使用远程调试器是调试这样的代码的好方法。您还需要增加挂钩超时,以便Windows在调试时不会破坏挂钩,HKEY_CURRENT_USER \ Control Panel \ Desktop \ LowLevelHooksTimeout设置。假设您正在使用WH_KEYBOARD_LL。