我想創建一個Windows鉤子,專門捕獲HSHELL_WINDOWCREATED消息。
但是,我的鉤子proc永遠不會被調用。問題與WH_SHELL
我的DLL具有安裝鉤子的函數:
hHook = SetWindowsHookEx(WH_SHELL, (HOOKPROC)CreateWindowHook, hinst, 0);
HINST用的DllMain(填充),在DLL_PROCESS_ATTACH消息。
CreateWindowHook被定義爲:
LRESULT CALLBACK CreateWindowHook(int code, WPARAM wParam, LPARAM lParam) {
if (code == HSHELL_WINDOWCREATED) {
// snip
}
return CallNextHookEx(0, code, wParam, lParam);
}
我希望每當創建一個新的頂級窗口被稱爲PROC,但它永遠不會被調用。我錯過了什麼? 謝謝。
的更多信息:
根據這篇文章 - http://msdn.microsoft.com/en-us/library/ms644959(VS.85).aspx - 想要接收WH_SHELL消息應用程序必須通過SystemParametersInfo註冊本身():
MINIMIZEDMETRICS st;
st.cbSize = sizeof(MINIMIZEDMETRICS);
st.iArrange = ARW_HIDE;
BOOL ret;
ret = SystemParametersInfo(
SPI_SETMINIMIZEDMETRICS,
sizeof(MINIMIZEDMETRICS),
&st,
0);
那是在調用的dll做,或者加載包含掛鉤的dll的應用程序,或者它沒有關係?
感謝您的回覆。 WinXP,我的帳戶是一個管理員帳戶。 – Number8 2009-07-14 18:56:16