Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.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_Console_Hook - Fatal编程技术网

C++ 是否可以放置一个钩子来捕获子进程发送到控制台的消息?

C++ 是否可以放置一个钩子来捕获子进程发送到控制台的消息?,c++,windows,winapi,console,hook,C++,Windows,Winapi,Console,Hook,所以我启动一个普通的控制台程序,然后在其中创建另一个进程。下一步,子进程尝试将某些内容写入父进程所拥有的控制台 有没有可能在这个控制台上设置一个钩子,这样当子进程试图写入一些文本时,我就可以在这个文本上进行搜索和替换,并将更改后的文本放到控制台上 (我知道使用管道是可能的,但这里我特别要求在控制台级别执行此操作,因为如果某些程序看到它们连接到管道而不是控制台,它们的行为会有所不同。) SetWindowsHookEx与我的问题有关吗?那么您想在控制台上安装winproc钩子吗?当然,您可以这样做

所以我启动一个普通的控制台程序,然后在其中创建另一个进程。下一步,子进程尝试将某些内容写入父进程所拥有的控制台

有没有可能在这个控制台上设置一个钩子,这样当子进程试图写入一些文本时,我就可以在这个文本上进行搜索和替换,并将更改后的文本放到控制台上

(我知道使用管道是可能的,但这里我特别要求在控制台级别执行此操作,因为如果某些程序看到它们连接到管道而不是控制台,它们的行为会有所不同。)


SetWindowsHookEx
与我的问题有关吗?

那么您想在控制台上安装winproc钩子吗?当然,您可以这样做,首先您必须获取控制台窗口的HWND(读取),然后您可以调用SetWindowsHookEx()并将其挂起。请注意,在钩子过程中,调用defwinproc将调用控制台的原始winproc,因此如果不想修改控制台的整个行为,请清除该钩子。

那么您想在控制台上安装winproc钩子吗?当然,您可以这样做,首先您必须获取控制台窗口的HWND(读取),然后您可以调用SetWindowsHookEx()并将其挂起。请注意,在钩子过程中,调用defwinproc将调用控制台的原始winproc,因此,如果您不想彻底修改控制台的整个行为。

为了避免混淆,windows消息与此无关,因此钩子是完全错误的概念


如果要更改写入标准输出的子进程数据,则需要创建自己的管道,并在创建时传递给该进程。这允许您从中读取数据,根据需要进行更改,然后自己打印到标准输出。无法截获直接写入控制台的数据。

为了避免混淆,windows消息与此无关,因此挂钩是完全错误的概念

如果要更改写入标准输出的子进程数据,则需要创建自己的管道,并在创建时传递给该进程。这允许您从中读取数据,根据需要进行更改,然后自己打印到标准输出。无法截获直接写入控制台的数据