Windows键盘钩子挂起调试器

3

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

然而,如果我在Visual Studio中触发断点时挂起,然后按下一个键,Visual Studio和我的应用程序将完全锁死。这是一个问题,因为我通常使用F键来跟踪代码。如果我使用鼠标并从Visual Studio的调试菜单中向前步进,它可以正常工作。但使用F10等键是一种习惯,我经常忘记使用鼠标。

是否有任何方法可以恢复我的键盘快捷键?或者使用不同的方法来监听键盘?

1个回答

4

这是很不可避免的,调试器中断会阻止钩子处理通知,所以键盘会失效。在另一台机器上使用远程调试器是解决这类问题的好方法。你还需要增加钩子超时时间,这样在你进行调试时,Windows不会销毁钩子。可以通过HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout设置来实现。假设您正在使用WH_KEYBOARD_LL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接