在控制台模式下运行应用程序时,有几行写入控制台。
现在我想以编程方式执行此操作。这是我使用的一些示例代码: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
直接读取,但它不会产生任何数据。