プログラム内からほかのアプリケーションを実行するには、Processクラス(System.Diagnostics名前空間)のstaticなメソッドであるStartメソッドを使用するのが最も簡単な方法だ。実行しようとするアプリケーションのパス名をパラメータに指定するだけでよい。アプリケーションをパラメータやオプション付きで実行するには、2つのパラメータを取るバージョンのStartメソッドを利用する。
ProcessクラスのStartメソッドを利用したサンプル・プログラムを以下に示す。
// procstart.cs
using System.Diagnostics;
public class ProcessStart {
static void Main() {
// 実行ファイルを指定して実行
Process.Start(@"C:\Program Files\Windows Media Player\mplayer2.exe");
// パラメータを指定して実行
Process.Start("notepad.exe", @"C:\boot.ini");
// 拡張子が登録されているファイルを指定
Process.Start(@"C:\boot.ini");
// URLを開く
Process.Start("http://atmarkit.itmedia.co.jp/fdotnet/");
// フォルダを開く
Process.Start(@"C:\");
}
}
// コンパイル方法:csc procstart.cs
procstart.csのダウンロード
' procstart.vb
Imports System.Diagnostics
Class ProcessStart
Shared Sub Main()
' 実行ファイルを指定して実行
Process.Start("C:\Program Files\Windows Media Player\mplayer2.exe")
' パラメータを指定して実行
Process.Start("notepad.exe", "C:\boot.ini")
' 拡張子が登録されているファイルを指定
Process.Start("C:\boot.ini")
' URLを開く
Process.Start("http://atmarkit.itmedia.co.jp/fdotnet/")
' フォルダを開く
Process.Start("C:\")
End Sub
End Class
' コンパイル方法:vbc /r:System.dll procstart.vb
procstart.vbのダウンロード
プログラム後半の3つの呼び出しは、アプリケーションではなく、拡張子がアプリケーションに関連付けられているファイル、URL、フォルダ名をそれぞれ指定してアプリケーションを起動している。例えばINIファイルをStartメソッドのパラメータに指定した場合には、(Windowsでの設定を変えていなければ)メモ帳が起動して、そのファイルが開かれる。URLを指定した場合にはブラウザ(デフォルトではInternet Explorer)が起動してそのページに移動する。フォルダ名を指定した場合にはエクスプローラによりそのフォルダが開かれる。
このような挙動は、Windowsの[スタート]メニューにある[ファイル名を指定して実行]を実行して開くダイアログ・ボックスでアプリケーションやファイル名、URLなどを指定した場合と同じだ。これらはどちらもWindowsシステムの機能(シェルの機能)を利用しているためである。
[ファイル名を指定して実行]ダイアログ・ボックス
このダイアログは[スタート]メニューにある[ファイル名を指定して実行]により開く。ここでは、アプリケーションのパス名やコマンド名、拡張子がアプリケーションに関連付けられているファイル、URL、フォルダ名などを指定して実行することができる。
このダイアログでエラーになるような場合、つまり指定したアプリケーションが存在しない場合や、ファイルの拡張子がアプリケーションに関連付けられていない場合などはStartメソッドでもエラーとなり例外が発生する。サンプル・プログラムでは省略しているが、外部リソースを扱うStartメソッドでは例外処理は必須である。
カテゴリ:クラス・ライブラリ 処理対象:Windows環境
使用ライブラリ:Processクラス(System.Diagnostics名前空間)
Copyright© Digital Advantage Corp. All Rights Reserved.