C#捕获已经运行的Process的STDOut

时间:2015-03-28 22:44:25

标签: c#

我想在已经启动后捕获流程标准输出流。

即。像这样的伪代码:

var process = Process.GetProcessById(1234);
process.OutputDataReceived += process_OutputDataReceived;
process.ErrorDataReceived += process_ErrorDataReceived;
process.Exited += process_Exited;
process.EnableRaisingEvents = true;
process.BeginErrorReadLine();
process.BeginOutputReadLine();

我喜欢一种解决方案,如果可能的话,它不会强迫我创建管道或调用本机代码等。

1 个答案:

答案 0 :(得分:1)

怎么样?
process.StandardOutput.ReadToEnd();

process.BeginOutputReadLine();也可能有用。

当然,这是假设原始流程是以UseShellExecute = falseRedirectStandardOutput = true

开始的

修改

由于进程可能是使用shell启动的,并且没有重定向stdout。看看http://pastebin.com/f3eda7c8