海洛斯,上断点和SetWindowsHookEx WH_MOUSE冻结在Win7
在WinXP我的应用程序已经成功地利用全球mousehook检索mouseposition和点击,即使它不具有焦点。钩是在一个单独的.dll和正在初始化像这样(在Delphi):
SetWindowsHookEx(WH_MOUSE, @MouseHookCB, HInstance , 0);
现在Win7上这种运行期间也基本工作原理,但我不能再调试应用程序很好(我可以在XP下)。只要我遇到断点,Win7就会完全冻结。我无法切换到另一个进程(即使taskmanager无法打开)。如果我很幸运,我可以在IDE中停止我的过程。大多数时候,尽管我必须重新启动/注销才能重新获得访问权限。
我知道,因为如果我不使用挂钩,不存在这个问题是关系到鼠标钩子。 这是即使我hookprocedure什么也不做,但以下几点:
CallNextHookEx(MouseHook, Code, wParam, lParam);
即。只是钩子的存在会导致麻烦。有
的globalhooks.dll写东西到事件日志我看到它,甚至当我在一个断点仍然有效。
我试图用通过WH_MOUSE_LL一个lowlevelmouse挂钩,基本上工作,但让我奇怪的鼠标移动的延迟在安装挂钩,有时在调整大小的窗口。当遇到断点时也会冻结几秒钟,但至少系统会在〜5秒后恢复......因此,此选项更糟糕,因为它也会影响运行时间。
为什么WH_MOUSE钩在首位调试期间冻结我的应用程序的任何想法?