トップ > Tech > CSharp > Processクラスを使ったアプリ実行で出力を取得する

Processクラスを使ったアプリ実行で出力を取得する

Process クラスを使って外部のファイルを .NET プログラムから実行することができる。

その際、実行するファイルがコンソールアプリだと、その実行結果(出力)を取得したい場合が多い。 Process を実行する際に標準出力(通常はコマンドプロンプト)をリダイレクトしてやれば、出力を得ることができる。

具体的には下記の流れだ。

  1. ProcessStartInfo の RedirectStandardOutput プロパティを true にする。
  2. Process.Start メソッドで実行する。
  3. Process.StandardOutput プロパティが出力を受け取るストリームになっているので、ReadToEnd メソッドですべての出力を string 型で得る。
  4. 得た文字列をごにょごにょする。

ソースコードを次に示す。

var process = new Process();
process.StartInfo = new ProcessStartInfo("ファイル名", "コマンドライン引数");
// コマンドプロンプトをださない
process.StartInfo.CreateNoWindow = true;
// シェル実行しない
process.StartInfo.UseShellExecute = false;
// 標準出力をリダイレクト
process.StartInfo.RedirectStandardOutput = true;
//実行
process.Start();
// 標準出力を読み取ってデバッグ出力
string output = process.StandardOutput.ReadToEnd(); 
output = output.Replace("\r\r\n", "\n");
Debug.Write(output);
(2010/09/09 13:34:49)
6836
プロフィール

Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。 好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。 詳しくは Web mixi で。

Bookmark and Share