C#でのやり方がわからなかったので、とりあえずやってみた。
実行
using System.Diagnostics; private void Start(string exeName) { // アプリケーションの実行 Process.Start(exeName); // パラメータ、オプションを渡すには // Process.Start(exeName, "オプション"); }
こんだけ。簡単簡単。
終了するまで待機
using System.Diagnostics; private void Start(string exeName) { // アプリケーションの実行 Process process = Process.Start(exeName); // 終了するまで待機する process.WaitForExit(); MessageBox.Show("終了したよ."); }
WaitForExit(1000)とすると終了ではなくて、1秒だけ待つ。
終了するまで非同期で待機
using System.Diagnostics; private void Start1(string exeName) { // オブジェクトの生成 Process process = new Process(); // ファイルの指定 process.StartInfo.FileName = exeName; // イベントハンドラの設定 process.SynchronizingObject = this; process.Exited += new EventHandler(Callback); // プロセスが終了したときにイベントを発生させる process.EnableRaisingEvents = true; // 実行 process.Start(); } private void Callback(object sender, EventArgs e) { // プロセスが終わった時に呼ばれる MessageBox.Show("終了したよ."); }
終了したときにCallback関数が呼ばれる。