我想创建一个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