我正在尝试使用全局 shell 挂钩来侦听 Windows 创建和销毁的事件,但似乎我的程序只是为本地线程注册了被销毁的事件。根本没有创造事件,也绝对不是我认为应该是的全球事件。
我花了最后一天搜索谷歌以及 codeguru、codeproject 和 msdn,但在我看来我做得对,虽然我显然不是。有人可以帮我指出正确的方向吗?
#pragma data_seg(".SHARE")
HWND hWndServer = NULL;
HHOOK g_shell_hook = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:.SHARE,RWS")
TASKBAR_API int StartShellHook(HWND hWnd)
{
g_shell_hook = SetWindowsHookEx(WH_SHELL, ShellProc, g_dll_module_handle, 0);
if(g_shell_hook)
hWndServer = hWnd;
return (g_shell_hook != NULL);
}
这是我连接到 shell 的代码,这对我来说似乎都是正确的,但同样,它没有给出正确的输出。现在,ShellProc 函数只是设置为在窗口创建和销毁消息上进行微不足道的变量递增,只是为了在一行上放置一个断点,但程序只为本地窗口的销毁消息打断点。再次,任何帮助都会很棒,非常感谢您。