2010-12-02 13 views
2

あなたのコンピュータにインストールしたアプリケーションを開いて閉じるためのプログラムを作りたいと思います。Javaからのアプリケーションのオープンとクローズ

は、私が使用して

Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc"); 

は、Word文書のmyfile.doc

問題は、コマンドを実行したときに開くWordアプリケーションを閉じることができない、このコマンドを使用しているを開くことを知っています。

Javaプログラムからアプリケーションを開いたり閉じたりするにはどうしたらいいですか?

ありがとうございます!

よろしくお願いいたします。

答えて

5

あなたはexec()によって返さProcessを格納し、その上にdestroy()を呼び出すことによって、試みることができるが、私はあなたがしてJVMによって管理されていない新しいプロセス(のみを起動し、Windowsのコマンドを実行しているので、それがうまくいくとは思いませんrundll32はJVMに見えます)。

確かに動作するが、クロスプラットフォームではない解決策(Wordはクロスプラットフォームではないので実際に気にしないと思う:)別のWindowsシェルコマンドを使用して、あなたは言葉を開くために行うように、

taskkill /IM word.exe 

のようにあなたはdefaultRuntime.exec(...)で、同じ方法でそれを実行する可能性があります。多くのワードプロセスを開いていて、特定のプロセスを強制終了したい場合は、タスクリストを解析して正しいPIDを取得してから、taskkill /PID XXXXを試してください。

+0

)これを試したところ、(winword.exeを手動で起動した後で)動作します。 –

+0

ありがとうジャックマーク、私はそれを試してみます。 – Lobo

1

私はJavaのエキスパートではありませんが、最近私はあなたが述べた機能に触れています。私が思い出しているように、Runtime.getRuntime()。exec()はProcessクラスオブジェクトを返します。

あなたは次のようにやってみてくださいすることができます

Process word = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc"); 
// some logic 
word.destroy(); 

多分それはあなたの終値の問題を解決します。

+0

残念ながら、実際にはWordを殺すわけではありません。それは私が想定する一般的なケースのために働く。 Wordを直接呼び出すと(シェルではなく)動作しません。 –

+0

何が残念ですか(( – Luzik

関連する問題