我想自己绘制和移动窗户(使用铬嵌入式框架).要做到这一点,我需要一个全局回调鼠标移动,在我的窗口外 - 所以我安装了一个低级鼠标钩:
hMouseLLHook = SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)mouseHookProc, hInstance, NULL);
钩子简单地抓取鼠标事件并调用"CallNextHookEx".这里没有问题,一切都按照要求行事.我现在的问题是:如果调试器中断或抛出异常,我就不能再移动鼠标..
我尝试在另一个线程中处理钩子,如下所示:
HANDLE mouseProcHandle = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)mouseProcessor, NULL, NULL, &dwMouseProcThread); DWORD WINAPI Win32Application::mouseProcessor(LPVOID lpParm) { hMouseLLHook = SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)mouseHookProc, ((Win32Application*)Application::getInstance())->hInstance, NULL); MSG message; while (GetMessage(&message, NULL, 0, 0)) { TranslateMessage(&message); DispatchMessage(&message); } UnhookWindowsHookEx(hMouseLLHook); return 0; }
但这也无法解决问题.是否有解决方法,解决方案或其他方法来执行此操作?另外,我认为可能没有必要使用低级别的钩子,因为我只需要了解它的运行情况,如果我是最后一个,那就不会有问题,所以系统/其他进程可以处理首先是鼠标回调.