获取正在运行的进程c#或powershell窗口的控制台输出

本文关键字:powershell 窗口 控制台 输出 进程 运行 获取 | 更新日期: 2023-09-27 18:12:50

是否有可能获得正在运行的进程的控制台输出?我知道我可以像这样得到所有正在运行的进程的列表:

Process.GetProcesses();

但是我怎么能利用标准输出并将其管道到一个文件或不同的控制台应用程序呢?

前提是创建一个我无法更改的现有应用程序的调试跟踪工具。该应用程序触发了一个特定的进程,并且没有设置RedirectStandardOutput属性,因此我无法分析该子进程的输出。

获取正在运行的进程c#或powershell窗口的控制台输出

你所要求的在c#中是不可能的。如果你下拉一个层到本地c++,它是可能的(尽管仍然相对困难),通过使用Windows API来实现API钩子在这个答案中描述。

在继续这条路之前,请注意答案中其余的讨论。绝大多数时候,这不是你想做的。正如在讨论中提到的,一个程序拥有它自己的标准输出,你不能换别人家的地毯。还要预测如果两个程序同时尝试这样做会发生什么。