2012-03-15 207 views
3

我有一个从主应用程序中的辅助(非GUI)线程启动的插件DLL。该DLL必须从应用程序的主窗口中获取键盘事件。我使用的是SetWindowsHookEx(),效果很好。但是,如果我在钩子处于活动状态时在Visual Studio中遇到了断点,然后按一个键,则Visual Studio和我的应用程序将完全锁定。这是一个问题,因为我通常使用F键来遍历代码。如果我使用鼠标并从Visual Studio的“调试”菜单中前进,它可以正常工作。但是使用F10等人。是这样一种习惯,我通常忘记使用鼠标。Windows键盘挂钩挂起调试器

有什么我可以做的,让我的键盘快捷键回来?或者听不同的方法来听键盘?

回答

4

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