Windows 键盘 Hook 挂起调试器

标签 windows visual-studio debugging keyboard hook

我有一个从主应用程序中的辅助(非 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/

相关文章:

windows - 在不使用 nircmd 实用程序的情况下移动任何打开的应用程序在 Windows 批处理文件中的位置

c# - 在 C# 中将 Windows 键用于其他目的

visual-studio - 是否可以在 Visual Studio 的堆栈中复制和粘贴文本?

visual-studio-2010 - 如何执行与从Powershell中发布Visual Studio中的发布完全相同的功能

css - 是否可以直接从浏览器禁用网站加载的字体?

javascript - 使用 Firebug ,js错误显示在哪里?

python - 如何防止 Intellij python 调试器单步执行内置函数?

C++ 命名管道 WriteFileEx/ReadFile, unicode/ansi

windows - 日志文件中的 Tortoise SVN 作者丢失

visual-studio - 无法打开 Visual Studio - 引发错误 'cannot run when setup is in progress'