6

ユーザーが [スタート] -> [シャットダウン] を選択したときに「適切に」シャットダウンしたい Java アプリケーションがあります。Runtime.addShutdownHook(...) を介して JVM シャットダウン リスナーを使用しようとしましたが、UI 要素を使用できないため、これは機能しません。

また、メイン アプリケーションの UI ウィンドウで終了ハンドラーを使用してみましたが、シャットダウンを一時停止または停止する方法がわかりません。シャットダウンを適切に処理するにはどうすればよいですか?

4

2 に答える 2

4

私の知る限り、Windows WM_QUERYENDSESSIONメッセージのメッセージ ハンドラーをセットアップするには、JNI の使用を開始する必要があります。

これを行うには (私のように Windows プログラミングに慣れていない場合)、新しいメッセージ処理関数 (ここで説明) を使用してウィンドウの新しいクラスを作成し、メッセージ ハンドラーから WM_QUERYENDSESSION を処理する必要があります。

注: ネイティブ メッセージ処理コードから Java メソッドを呼び出す前に、メッセージ処理スレッドで JNIEnv::GetJavaVM(...) を使用し、次に JavaVM::AttachCurrentThread(...) を使用する必要があります。

于 2008-09-14T22:34:01.140 に答える
4

前述の JNI アプローチはおそらく機能します。

基本的にJNIのラッパーであるJNAを使用して、使いやすくすることができます。追加のボーナスは、(少なくとも私の意見では) 通常、生の JNI よりも高速で保守しやすいことです。JNA はhttps://jna.dev.java.net/にあります。

アプリケーションを Windows のサービスのように動作させようとして、スタート メニューからアプリケーションを起動する場合は、 http ://wrapper.tanukisoftware.org/doc にある Java サービス ラッパーを使用できます。 /英語/download.jsp

于 2008-09-16T13:18:51.210 に答える