2011-09-02 65 views
-2

我試圖鉤住鼠標;我MouseProc是鼠標鉤子和消息框問題

{ 
    if(nCode==HC_ACTION) 
    { 
     if(wParam==WM_LBUTTONDOWN) 
     { 
      MessageBox(NULL,L"",L"",MB_OK); 
      return TRUE; 
     } 
    } 
    return CallNextHookEx(hHook,nCode,wParam,lParam); 
} 

我不知道爲什麼它gobal鉤我的鼠標,然後在租賃10消息框生成只是一個leftmouse按鈕的點擊。爲什麼它錯了?此外,我想知道如何鉤住taskmanager中存在的特定進程而不是鉤住所有現有的窗口?爲此,我嘗試將SetWindowsHookEx()的第四個參數設置爲指定線程的id,但它似乎沒有實際掛鉤。 (雖然hHook返回的是非NUll)

謝謝。

回答

0

你怎麼能鉤住一個特定的過程?鼠標點擊是全球性的。你的意思是你想要鉤住某個窗口,你可以通過一個注入的DLL來實現這個窗口,在這個窗口中你可以使用subclass said window


至於爲什麼你的鉤子稱爲每次點擊幾次,MSDN says this

「系統調用這個函數,每當應用程序調用的GetMessage或的PeekMessage功能,並沒有要處理的鼠標消息「。

0

您的掛鉤過程需要存在於DLL中供初學者使用。這是全球性的要求。您可以在線程ID上安裝鉤子,這是最好的方法,但如果您需要

,也可以在鉤子上執行一些進程ID檢查