【发布时间】:2013-03-12 12:06:23
【问题描述】:
在控制台模式下运行应用程序时,会向控制台写入几行代码。
现在我想以编程方式执行此操作。这是我使用的一些示例代码:MSDN on OutputDataReceived Event
private static StringBuilder _sortOutput = null;
var proc = new Process();
var info = new ProcessStartInfo();
info.FileName = @"C:\SomeApp.exe";
info.UseShellExecute = false;
info.WindowStyle = ProcessWindowStyle.Normal;
info.CreateNoWindow = false;
proc.StartInfo = info;
info.RedirectStandardOutput = true;
info.RedirectStandardError = true;
proc.OutputDataReceived += HandleOutputData;
proc.ErrorDataReceived += HandleOutputData;
proc.Start();
proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
proc.WaitForExit();
var exitCode = proc.ExitCode;
var output = _sortOutput.ToString();
private void HandleOutputData(object sender, DataReceivedEventArgs e)
{
_sortOutput.Append(e.Data);
}
但 DataReceivedEventArgs.Data 始终为空,我无法返回在打开的控制台窗口中看到的结果。
如何接收输出?有没有办法做到这一点?
更新
我也尝试直接读取proc.StandardOutput,但它没有产生任何数据。
【问题讨论】:
标签: c# .net process redirectstandardoutput