検索
連載

プログラムから別のアプリケーションを起動するにはJavaTips 〜Javaプログラミング編

Share
Tweet
LINE
Hatena

 プログラムから既存のアプリケーションを起動したいとき、java.langパッケージRuntimeクラスにあるexecメソッドが使えます。

 例えば、Windowsにおいて、電卓メモ帳を立ち上げるプログラムは下の図1のようになります。

図1 電卓とメモ帳を立ち上げるプログラム(Windows用)
図1 電卓とメモ帳を立ち上げるプログラム(Windows用)

 Windowsのメモ帳(notepad.exe)は、実行パラメータとしてファイル名を指定すると、これを開いて起動しますので、この例では、「C:\a.txt」というファイルがあれば、これがメモ帳で開けます。

起動できるアプリケーションには制限がある

 このexecメソッドは、アプリケーションの実行プロセスを作成し、Processクラスのサブクラスのインスタンス(Processオブジェクト)を返します。

 ただし、特定のネイティブなプラットフォーム上の特殊なプロセスではうまく動作しない場合があります。例えば、

  • ネイティブなウィンドウ処理プロセス
  • デーモンプロセス
  • Win32環境でのWin16/DOSプロセス、MS-DOSプロンプトやコマンドプロンプト
  • UNIXやLinuxのシェルスクリプト

 などといったプロセスです。

 また、返されたProcessオブジェクトを用いて、アプリケーションの実行プロセスの制御や、プロセス情報の取得が行えます。

 1つ注意しておきたいのは、Processオブジェクトへの参照がなくなった場合でも、サブプロセスは終了されず、非同期的に実行を続けることです。

ウィンドウアプリに電卓起動メニューを

 もう1つのサンプルとして、swingを用いたウィンドウアプリケーションで、電卓を立ち上げるメニューを持つ単純なプログラムは下記のようになります。

図2 電卓起動メニューを持つウィンドウアプリ(Windows用)
図2 電卓起動メニューを持つウィンドウアプリ(Windows用)
図3 電卓起動メニューを持つウィンドウアプリの実行画面
図3 電卓起動メニューを持つウィンドウアプリの実行結果

 なお、この機能はアプレットからは利用できず、実行すると例外(AccessControlException)が発生します。

Profile

RunDog.org

平野正喜


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る