Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么时候将窗口挂钩添加到挂钩链_C++_Windows_Winapi_Hook - Fatal编程技术网

C++ 什么时候将窗口挂钩添加到挂钩链

C++ 什么时候将窗口挂钩添加到挂钩链,c++,windows,winapi,hook,C++,Windows,Winapi,Hook,我正在尝试将Windows钩子添加到钩子链,并想知道它到底是何时添加的 我按以下顺序执行操作: 我启动任何程序并向其附加调试器,在DllMain上添加断点,并在注入代码的回调函数上添加断点 我注入了全球挂钩 我通过编程切换窗口的可见性-在这里我点击了DllMain函数 当我将窗口设置为前景窗口时,我就在钩子回调上点击了断点 有没有一种方法可以触发向窗口回调链添加钩子回调而不使窗口成为前景窗口 谢谢 据我所知,在调用SetWindowsHookEx的过程中,钩子被添加到钩子链中。DLL不一定立即加

我正在尝试将Windows钩子添加到钩子链,并想知道它到底是何时添加的

我按以下顺序执行操作:

  • 我启动任何程序并向其附加调试器,在DllMain上添加断点,并在注入代码的回调函数上添加断点
  • 我注入了全球挂钩
  • 我通过编程切换窗口的可见性-在这里我点击了DllMain函数
  • 当我将窗口设置为前景窗口时,我就在钩子回调上点击了断点
  • 有没有一种方法可以触发向窗口回调链添加钩子回调而不使窗口成为前景窗口


    谢谢

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

    实际上,有一些触发因素

    如果钩子的类型是
    WH\u GETMESSAGE
    ,则可以执行
    PostMessage(HWND\u BROADCAST…
    调用,以强制任何GUI进程加载带有钩子过程的dll

    对于其他类型的钩子,您可以试一试。

    您问的是一个问题(“钩子何时安装到钩子链中?”),但显然有兴趣找到另一个问题的答案(“系统何时加载包含钩子过程的模块?”)。是哪一个?