我正在使用以下代码设置全局挂钩:

SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, 0)

我设置了一个断点,以便在我第一次运行该应用程序时可以看到调用了MouseProc方法。这有效,但是在第一次之后不再调用。挂钩是否已自动删除,如何获得此挂钩,以便挂钩自动持久存在?我正在为Windows编写此应用程序,这是一个C++ win32项目。

最佳答案



这足以解释问题。调试器当然会中断。这样可以防止将其他鼠标消息传递给具有焦点的窗口。 Windows忍受了5秒钟,然后毫不客气地禁用了钩子(Hook),因为它认为您的代码已损坏。

超时是可配置的,您可以使用Regedit.exe设置HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout值。默认情况下不存在,请首先添加DWORD值。单位为毫秒。

关于c++ - SetWindowsHookEx WH_MOUSE_LL Hook 仅需移动1鼠标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20975887/

10-10 21:34