何时将Windows挂钩添加到挂钩链中

时间:2014-12-12 13:00:28

标签: c++ windows winapi hook

我正在尝试将一个Windows挂钩添加到挂钩链,并想知道它何时被添加?

我按此顺序执行操作:

  1. 我启动任何程序并附加一个调试器,在DllMain上添加一个断点和我注入的代码的回调函数;
  2. 我注入了全局钩子;
  3. 我以编程方式切换窗口的可见性 - 这里我点击了DllMain函数;
  4. 只要我将窗口设置为前景窗口,我就会在钩子回调上点击断点。
  5. 有没有办法触发向窗口回调链添加钩子回调而不使窗口成为前景窗口?

    谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知,在调用SetWindowsHookEx期间,钩子被添加到钩子链中。 DLL不一定立即加载 - 操作系统决定何时加载。钩本身显然只在调用钩链时调用,这取决于钩子。如果你挂钩WH_CALLWNDPROC并且直到某个点没有调用你的回调,那意味着没有任何消息要挂钩。因此,如果您只想拦截消息,则没有问题。如果您确实认为有问题,请提供更多信息。