外部のアプリケーションを起動


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

.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を返します。

読んでいる本


Effective C#

QLOOKアクセス解析

ここを編集