我可以正确地设置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平台上忽略了钩子参数:
http://msdn.microsoft.com/en-us/library/ms644974.aspx
http://www.klenotic.com/pl/null_hhook/