我使用下面的代碼來設置鼠標本地鉤:設置兩個鼠標鉤在兩個線程
//declare hook handle global variable:
static HHOOK hhk;
//set new hook:
hhk = SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseWndProc, GetModuleHandle(NULL), GetCurrentThreadId());
這裏是mouseproc回調函數的代碼:上面的代碼我設置使用所描述
LRESULT CALLBACK MouseWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
MOUSEHOOKSTRUCT *pMouseStruct = (MOUSEHOOKSTRUCT*)lParam;
if(nCode < 0)
{
return CallNextHookEx(hhk, nCode, wParam, lParam);
}
//do something...
return CallNextHookEx(hhk, nCode, wParam, lParam);
}
第一個線程中的本地鉤子。 在第二個線程中,我也需要設置新的本地鉤子。問題是 - 當我設置新鉤子(對於第二個線程)時,全局變量hhk
將被覆蓋。第一個鉤子的mouseproc現在使用錯誤的鉤子手柄。對? 那麼我必須作爲CallNextHookEx()函數的第一個參數傳遞什麼?
所以使用兩個變量。 – 2014-09-25 05:56:39
在這種情況下,mouseproc函數如何確定其變量? – 2014-09-25 06:10:43
爲什麼在調用'SetWindowsHookEx'時將'MouseWndProc'強制轉換爲'HOOKPROC'? – 2014-09-25 06:19:29