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. アプリケーションを終了するとAndroidサービスが停止する
- 2. .netコンソールアプリケーションの終了を停止する
- 3. アプリケーションを終了した後にサービスが停止する
- 4. postgresqlでクエリを停止/終了する方法は?
- 5. Rubymineでサーバ(開発)を停止/強制終了する方法
- 6. Vbaでフォームの終了イベント処理を停止する
- 7. setTimeoutが終了するまでjavascriptデータベースクエリを一時停止
- 8. サービスを終了するとサービスが停止する
- 9. UIPopoverが自動的に終了するのを停止する
- 10. AsyncTaskを停止するとサービスが終了する
- 11. EAGLViewを終了してすべてのプロセスを停止する
- 12. DartEditor.exeとjava終了コード1
- 13. Java終了コードと意味
- 14. XAMPP - 終了をクリックしてサービスを停止する方法?
- 15. 終了ステータスが0以外のFortranプログラムを停止する
- 16. メディアプレーヤーのストリーミング、終了アプリの音楽を停止するとき
- 17. サイクルの終了時にアニメーションを停止する方法は?
- 18. SignalRサービスを停止/終了する方法
- 19. 一時停止中にアンドロイドアプリケーションを終了する
- 20. サービスを停止または終了する
- 21. フレーム終了時にjTimerを停止する
- 22. ウェブページの開始/終了時にバウンスを停止する(OS X)
- 23. 終了時にアプリケーションを終了する
- 24. 再生 - >停止 - >再生 - >タッチでオーディオを終了
- 25. 着信時にAndroidアプリケーションを一時停止し、通話終了後に再開
- 26. オーディオの再生終了時にスライダが停止する
- 27. 明示的に終了した後にredmineが停止する
- 28. ModalPopupの終了後、jQueryの動作が停止する
- 29. Visual Studioでフォーム終了後にデバッグが停止しない
- 30. Javaアプリケーションを終了する前にコードを確実に実行する方法
私はこれまで、* 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