【发布时间】:2010-09-17 20:38:40
【问题描述】:
我可以正确设置 Windows 挂钩,但我对 MSDN 中的“调用 CallNextHookEx 函数以链接到下一个挂钩过程是可选的,但强烈推荐;否则,其他应用程序有已安装的挂钩将不会收到挂钩通知,因此可能会导致行为不正确。除非您绝对需要阻止其他应用程序看到通知,否则您应该调用 CallNextHookEx。"。
我想成为一名优秀的编程公民并调用下一个钩子。但是,我的钩子程序如下所示:
LRESULT CALLBACK CBTProc(int code, WPARAM wp, LPARAM lp)
{
if (code != HCBT_CREATEWND)
{
// What do I do here? It's not the event I requested so how do I pass it on?
return 0;
}
// It's the code we want (create window)
CallNextHookEx(...);
...
}
那么,如果代码不是我感兴趣的代码,那么在钩子过程中会发生什么?如何调用下一个钩子?
编辑:主要问题是从 SetWindowsHookEx 返回 HHOOK,需要将其传递给 CallNextHookEx 函数。
更新:似乎在 NT 平台上忽略了 hook 参数:
http://msdn.microsoft.com/en-us/library/ms644974.aspx
http://www.klenotic.com/pl/null_hhook/
【问题讨论】: