プログラムから既存のアプリケーションを起動したいとき、java.langパッケージのRuntimeクラスにあるexecメソッドが使えます。
例えば、Windowsにおいて、電卓とメモ帳を立ち上げるプログラムは下の図1のようになります。
Windowsのメモ帳(notepad.exe)は、実行パラメータとしてファイル名を指定すると、これを開いて起動しますので、この例では、「C:\a.txt」というファイルがあれば、これがメモ帳で開けます。
起動できるアプリケーションには制限がある
このexecメソッドは、アプリケーションの実行プロセスを作成し、Processクラスのサブクラスのインスタンス(Processオブジェクト)を返します。
ただし、特定のネイティブなプラットフォーム上の特殊なプロセスではうまく動作しない場合があります。例えば、
- ネイティブなウィンドウ処理プロセス
- デーモンプロセス
- Win32環境でのWin16/DOSプロセス、MS-DOSプロンプトやコマンドプロンプト
- UNIXやLinuxのシェルスクリプト
などといったプロセスです。
また、返されたProcessオブジェクトを用いて、アプリケーションの実行プロセスの制御や、プロセス情報の取得が行えます。
1つ注意しておきたいのは、Processオブジェクトへの参照がなくなった場合でも、サブプロセスは終了されず、非同期的に実行を続けることです。
ウィンドウアプリに電卓起動メニューを
もう1つのサンプルとして、swingを用いたウィンドウアプリケーションで、電卓を立ち上げるメニューを持つ単純なプログラムは下記のようになります。
なお、この機能はアプレットからは利用できず、実行すると例外(AccessControlException)が発生します。
Copyright © ITmedia, Inc. All Rights Reserved.