外部のアプリケーションを起動
最終更新:
atachi
.NET Frameworksではプロセス管理もライブラリに含まれているので、Win32APIを呼び出して新たなプロセスを作成する手法は使いません。
ファイルをアプリケーションで起動
Windowsには拡張子を元に、起動するアプリケーションを自動的に選択する機能が備わっています。
実行ファイル以外のファイルを指定した場合、Processクラスは自動的に起動するアプリケーションを決定し、そのファイルを開くための適切なアプリケーションのプロセスを開始します。
// システムが拡張子を判断して、登録されたアプリケーションで起動
Process.Start(@"C:\boot.ini");
// URLを指定した場合は、ブラウザが起動
Process.Start("http://www.yahoo.co.jp");
外部アプリケーションの起動
実行するアプリケーションを指定してプロセスを開始します。
// その1) Process.Start静的メソッドを使う方法
Process.Start("notepad.exe", @"C:\boot.ini");
// その2) Processオブジェクトを作成する方法
Process proc = new Process();
proc.StartInfo.FileName = "notepad.exe";
proc.StartInfo.Arguments = @"C:\boot.ini";
proc.Start();
proc.WaitForExit(); // 外部アプリケーションの終了を待つ
proc.ExitCode; // 終了コード
起動完了の監視
Start() を呼び出してすぐにアプリケーションが起動を完了するわけではありません。
起動が完了したことを確認したい場合は、WaitForInputIdle() を使用することで起動完了まで待つことができます(*1)
proc.Start();
proc.WaitForInputIdle(); // 起動完了まで待機
// または、WaitForInputIdle(1000)
WaitForInputIdle(Int32) では任意の経過時間までにアプリケーションがアイドル状態にならなければ待機を終了しfalseを返します。