我想設置跟蹤哪個應用程序處於活動狀態的全局鉤子。如何爲WH_CALLWNDPROCRET設置全局鉤子?
在我的主程序我做foloowing:
HMODULE mod=::GetModuleHandle(L"HookProcDll");
HHOOK rslt=(WH_CALLWNDPROCRET,MyCallWndRetProc,mod,0);
被稱爲MyCallWndRetProc
存在於所謂的HookProcDll.dll單獨的DLL的鉤子程序。掛鉤程序正在觀察WM_ACTIVATE
消息。
問題是,代碼在我設置掛鉤的行中出現問題,即在我撥打電話::SetWindowsHookEx
的行中。然後Windows得到反應遲鈍,我的任務欄消失,我留下了空的桌面。然後我必須重置電腦。
錯在哪裏,爲什麼Windows得不到響應?和 我是否需要在每個進程中注入HookProcDll.dll以設置全局鉤子,我該怎麼做?
我想你在第二行缺少一個函數名稱。而且你沒有發佈最重要的代碼:'SetWindowsHookEx'調用和你的鉤子程序。 – interjay 2010-05-27 22:32:15
我假設HHOOK rslt =(..)應該是HHOOK rslt = SetWindowsHookEx(...); – Michael 2010-05-27 22:38:09
您已經在每個進程中注入DLL。這是問題所在,你會崩潰每個GUI應用程序,包括Windows資源管理器。將其注入到自己的第一個中,以便調試它。 – 2010-05-27 22:51:53