2

パソコンにインストールしたアプリケーションを開閉するプログラムを作りたいです。

私はそれを使用することを知っています

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

Word 文書 myfile.doc を開く

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

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

ありがとう!

よろしく!

4

2 に答える 2

5

Process返されたものを保存しexec()て呼び出すことdestroy()で試すことができますが、JVM によって管理されない新しいプロセスを起動する Windows コマンドを実行しているため、うまくいかないと思います (rundll32 のみが JVM によって認識されます)。 )。

確かに機能するがクロスプラットフォームではない解決策(Wordもクロスプラットフォームではないので、実際には気にしないと思います:)別のWindowsシェルコマンドを使用して、必要なものを取得することです。

taskkill /IM word.exe

を使用して、単語を開くのと同じ方法で実行できますdefaultRuntime.exec(...)。多数のワード プロセスを開いていて、特定のワード プロセスを強制終了したい場合は、タスク リストを解析して正しい PID を取得してから、 を試す必要がありtaskkill /PID XXXXます。

于 2010-12-02T15:42:04.670 に答える
1

私は Java の専門家ではありませんが、最近、あなたが言及した機能と接触しました。思い出すと、Runtime.getRuntime().exec() は Process クラス オブジェクトを返します。

次のようにして試すことができます。

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

多分それはあなたの閉鎖の問題を解決するでしょう。

于 2010-12-02T15:39:01.193 に答える