我想自己繪製和移動我的窗口(使用鉻嵌入式框架)。 要做到這一點,我需要當鼠標移動時,我的窗口之外的全球回調 - 所以我安裝了一個低級別鼠標鉤子:低級別的鼠標鉤 - 斷點上的鼠標凍結
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;
}
但這也不能解決問題。有沒有解決方法,解決方案或其他方法來做到這一點? 另外,我認爲低級別的鉤子可能並不是必要的,因爲我只需要知道這個問題,如果我是最後一個,那麼系統/其他進程就可以處理首先是鼠標回調。
你不破鉤,鉤斷了! – CodeAngry
你真的需要一個鉤子嗎?捕獲不夠好嗎? –
就夠了,但它必須是無處不在,獨立於窗戶的。你有另一種解決方案來歸檔這個嗎? – lunatix