gpt4 book ai didi

windows - 运行进程 Win32Api 的管道输出(stdout)

转载 作者:可可西里 更新时间:2023-11-01 12:17:53 25 4
gpt4 key购买 nike

我需要使用 Windows API 从已经运行的进程中获取(或管道)输出。

基本上,我的应用程序应该允许用户选择一个窗口来通过管道传输输入,并且所有输入都将显示在控制台中。稍后我还会研究如何在 stderr 上获取管道。

重要提示:我没有使用 CreateProcess() 或其他方式启动进程。该进程已经在运行,我所拥有的只是该进程的句柄(从 GetWindowThreadProcessId() 返回)。

最佳答案

在不造成任何不良影响的情况下执行此操作的最干净的方法是使用 Hook ,如果您使用 Adam 暗示的方法将现有的 stdout 句柄与您自己的交换,可能会发生这种情况。

如果您将一个线程注入(inject)现有应用程序并使用截获版本交换对 WriteFile 的调用,该版本将首先为您提供正在写入的内容的副本(通过句柄、源等过滤),然后将其传递给真正的::WriteFile 不会造成任何伤害。或者,您可以通过仅换出 printf 或软件正在使用的任何调用来拦截更高层的调用(显然需要进行一些实验)。

但是,当 Adam 说这不是您想要做的事情时,他说得很对。这是最后的手段,所以在采取这种做法之前要非常非常仔细地考虑!

关于windows - 运行进程 Win32Api 的管道输出(stdout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com