2011-05-09 73 views
1

我不太瞭解SetWindowsHookEx()的文檔。我知道第一個論點應該寫什麼,但第二,第三和第四個我很困惑。
第二個參數askes HOOKPROC就像普通的windows proc一樣嗎?
對於第三和第四我不明白他們。那麼你們可以幫我解釋一下嗎?感謝SetWindowsHookEx的文檔問題

回答

0

在Windows API文檔在這裏解釋了所有比誰都清楚,這個論點可以:http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx

第二參數爲NULL或者一個指向HOOKPROC。請注意,「如果dwThreadId參數爲零或指定由不同進程創建的線程的標識符,則lpfn參數必須指向DLL中的鉤子過程,否則,lpfn可以指向與當前進程「。下面是從MSDN示例HOOKPROC:

LRESULT CALLBACK HookProc(
    int nCode, 
    WPARAM wParam, 
    LPARAM lParam 
) 
{ 
    // process event 
    ... 

    return CallNextHookEx(NULL, nCode, wParam, lParam); 
} 

第三參數必須「設置爲NULL,如果dwThreadId參數指定由當前進程創建的線程以及如果所述鉤子程序是代碼中與相關聯的當前進程

第四個是「鉤子程序將與之相關聯的線程的標識符。如果這個參數是零,鉤子程序在同一桌面作爲調用線程中運行的所有現有線程相關聯。」

+0

等待...所以我設置THRID參數NULL,如果四是不爲NULL – Mike 2011-05-09 02:30:17

+0

@Mike是的,這是正確的,除非你想攔截來自同一個桌面上的所有線程的所有消息,你要設置的第三爲NULL,第四至'GetCurrentThreadId()'。請點擊對勾這左上角旁回答如果確實是答案 – 2011-05-09 02:31:56

+0

例如,的chrome.exe是不是線程ID – Mike 2011-05-09 02:36:42