外部プログラムは Processクラス(System.Diagnostics名前空間)の Startメソッドで起動できる。
Process p = Process.Start("test.exe");
p.WaitForExit(); // プロセスの終了を待つ
int iExitCode = p.ExitCode; // 終了コード
コマンドパラメータは第二引数とする。
Process p = Process.Start("test.exe", "abc 123");
p.WaitForExit(); // プロセスの終了を待つ
int iExitCode = p.ExitCode; // 終了コード
終了を待つのではなく、終了イベントを受け取る方法もある。
Process p = Process.Start("test.exe");
p.EnableRaisingEvents = true;
p.Exited += new EventHandler(process_Exited);
void process_Exited(object sender, EventArgs e) {
Process p = (Process)sender;
// 終了処理
}
上で述べた方法でコマンド・アプリケーションを起動した場合、常にコンソール・ウィンドウが 開く。 これを避けるには ProcessStartInfo を使用する。
ProcessStartInfo psInfo = new ProcessStartInfo() {
FileName = "test.exe", // 実行するファイル
Arguments = "abc 123", // コマンドパラメータ(引数)
CreateNoWindow = true, // コンソール・ウィンドウを開かない
UseShellExecute = false, // シェル機能を使用しない
};
Process p = Process.Start(psInfo);
p.WaitForExit(); // プロセスの終了を待つ