外部プログラムは 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(); // プロセスの終了を待つ