Javaコードを使用してWindowsでアプリケーションを停止することはできますか? 私は、自分のPC上でアプリケーションを停止するためのショートカットのようなプログラムを作りたいと思っています。 ProcessBuilderを使用することは可能ですか?ありがとうJavaコードでアプリケーションを終了/停止する
答えて
Javaコードを使用してWindowsでアプリケーションを停止することはできますか? ... ProcessBuilderを使用することは可能ですか?
あなたがそれを記入しようとしているのと同じJavaアプリケーションからアプリケーションを起動した場合のみ。
それ以外の場合は、Windows固有のコマンドを実行して、Windowsのネイティブライブラリ呼び出しを行うためにJNIに基づいた殺害を行う必要があります。
その他の合併症は、アクセス許可の問題により特定のプロセスを強制終了できないことがあり、プロセスによっては強制終了されないことがあります。
私はJREがシステムプロセス用のAPIを提供していないと信じています。 ProcessBuilder
can システムプロセスを作成しますが、JVMの外部で作成されたプロセスに対してProcess
オブジェクトを提供することはできません。可能な限り特定のOS固有の作業を避けるために、Javaの人々の哲学的決定であると私は信じています。すべてのOSがpidを持っていると思うかもしれませんが、すべてがある種のkillメッセージを持っていると思うかもしれませんが、JavaはたくさんのOSで動作します。
ネイティブコードを作成してJNIでラップすることはできますが、それは無駄です。 988052さんの言うとおり、Runtime.exec
またはProcessBuilder
でシステム固有のコマンドを実行することをお勧めします。どのOSをサポートするかを決める必要があります。また、それぞれのOSに適したコマンド(およびOS検出コード)を取得してください。
プレーンJava、ネイティブアクセスなし? No
ProcessBuilderを使用すると、Javaアプリケーション内で開始したプロセスを制御できますが、他のプロセスが開始したプロセスを制御することはできません。
user988052さんのコメントによるとのpskill
はRuntime.exec
でこれを達成できます。 pskill
はTerminateProcess関数呼び出しを使用します。この関数をJNI(またはJNA、NLinkなどの他のネイティブ呼び出し元)でも呼び出すことができますが、OpenProcess関数呼び出しを介してプロセスへのハンドルを取得する必要があります。
OpenProcessを使用する場合は、必ずdwDesiredAccessでPROCESS_TERMINATE(0x0001)を要求してください。 – user314104
- 1. XCUITestsの間でアプリケーションの終了を停止できますか?
- 2. アプリケーションを終了するとAndroidサービスが停止する
- 3. アプリケーション終了時にサービスを停止する
- 4. アプリケーションを終了した後にサービスが停止する
- 5. sudoの停止スクリプトの終了を停止する
- 6. コンボボックスの終了を停止する
- 7. .netコンソールアプリケーションの終了を停止する
- 8. アプリケーションが終了するとスレッドが停止しますか?
- 9. UWPアプリケーションを終了するユーザーを停止できますか(終了タスクを除く)
- 10. サービスを停止してアプリを終了
- 11. 終了せずにクラウドビルドエージェントを停止
- 12. jqueryの停止/終了が長すぎてアニメーションを停止できない
- 13. エラーで終了するPythonスクリプトを停止する方法
- 14. 自己破棄/終了/停止webapp
- 15. OAuthトークンミドルウェアスリムバージョン3停止または終了
- 16. 停止ボタン付き終了プログラム
- 17. XCTestの各テストケース終了後にアプリの終了を停止する
- 18. キュウリシナリオ実行ごとにブラウザの終了と終了を停止する方法
- 19. Vbaでフォームの終了イベント処理を停止する
- 20. Rubymineでサーバ(開発)を停止/強制終了する方法
- 21. postgresqlでクエリを停止/終了する方法は?
- 22. プログラムを終了するまでプロセスが一時停止中
- 23. setTimeoutが終了するまでjavascriptデータベースクエリを一時停止
- 24. Flaskアプリケーションが終了したときにGunicornを停止する方法
- 25. アプリケーションからのポーリングと終了を停止するメッセージの送信方法
- 26. Java 8:特定の時間の後にスレッドを終了/停止する
- 27. モーダルを終了するときにYouTubeビデオを停止する
- 28. UIPopoverが自動的に終了するのを停止する
- 29. AsyncTaskを停止するとサービスが終了する
- 30. 終了する前にアニメーションを停止する方法は?
私はこれまで、* Runtime.exec *を使って* pskill * Windows util(それがまだ周りにあるかどうかわかりません)への呼び出しをラップすることによってこれを行いました。しかし、私はOSが* pskill *に関する保証をしているかどうかわかりません。 Windows上のAFAICTは、Un * xとははるかに異なっています。 * SIGKILL *を発行するUn * xは、プログラム**がただちに終了しなければならないことを意味し、すべてのリソース**をOSに返さなければなりません。(これは理論であり、実際にはうまくいきます。 – TacticalCoder
TerminateProcessとNtTerminateProcessは、NTでSIGKILLを送信することに似ています。つまり、(LinuxとWindowsの場合、おそらくはほとんど* nixの場合)特定のプロセスにアクセスするプロセスのためにOSにプロセスを "即座に終了"システムリソース(決して戻ってこないIOコールなど) WindowsのSIGTERMのアナログは、アプリケーションがサービスでない限り、WM_CLOSEウィンドウメッセージをアプリケーションのウィンドウに送信することです。その場合は、ControlServiceをdwControl = SERVICE_CONTROL_STOPとともに使用してください。 – user314104