C#で外部アプリケーションを起動する

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関数が呼ばれる。