アプリケーションをコンソールモードで実行すると、コンソールに行が書き込まれます。
これをプログラムで実行したいと思います。これが私が使用したいくつかのサンプルコードです:OutputDataReceivedイベントのMSDN
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は常にnullであり、開いたコンソールウィンドウに表示される結果が返されません。
どうすれば出力を受け取ることができますか?それを達成する方法はありますか?
アップデート
また、直接読み取ろうとしましたproc.StandardOutput
が、データが得られません。