要實現Win32的系統鉤子,必須呼叫SDK中的API函式SetWindowsHookEx來安裝這個鉤子函式,這個函式的原型是HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId);,其中,第一個引數是鉤子的型別;第二個引數是鉤子函式的地址;第三個引數是包含鉤子函式的模組控制代碼;第四個引數指定監視的執行緒。如果指定確定的執行緒,即為執行緒專用鉤子;如果指定為空,即為全域性鉤子。其中,全域性鉤子函式必須包含在DLL(動態連結庫)中,而執行緒專用鉤子還可以包含在可執行檔案中。得到控制權的鉤子函式在完成對訊息的處理後,如果想要該訊息繼續傳遞,那麼它必須呼叫另外一個SDK中的API函式CallNextHookEx來傳遞它。鉤子函式也可以透過直接返回TRUE來丟棄該訊息,並阻止該訊息的傳遞。 透過使用 DLL,程式可以實現模組化,由相對獨立的元件組成。載入快,執行效率高,具有通用性,這是DLL的重要特點。
要實現Win32的系統鉤子,必須呼叫SDK中的API函式SetWindowsHookEx來安裝這個鉤子函式,這個函式的原型是HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId);,其中,第一個引數是鉤子的型別;第二個引數是鉤子函式的地址;第三個引數是包含鉤子函式的模組控制代碼;第四個引數指定監視的執行緒。如果指定確定的執行緒,即為執行緒專用鉤子;如果指定為空,即為全域性鉤子。其中,全域性鉤子函式必須包含在DLL(動態連結庫)中,而執行緒專用鉤子還可以包含在可執行檔案中。得到控制權的鉤子函式在完成對訊息的處理後,如果想要該訊息繼續傳遞,那麼它必須呼叫另外一個SDK中的API函式CallNextHookEx來傳遞它。鉤子函式也可以透過直接返回TRUE來丟棄該訊息,並阻止該訊息的傳遞。 透過使用 DLL,程式可以實現模組化,由相對獨立的元件組成。載入快,執行效率高,具有通用性,這是DLL的重要特點。