2

正常に動作する Windows プログラムは、ユーザーが PC をシャットダウンするときに作業を保存できるようにする必要があります。

アプリでシャットダウン イベントを検出するにはどうすればよいですか? ユーザーが「キャンセル」を選択した場合、ユーザーがシャットダウンを中止できるようにする必要があります。

通常の Swing ウィンドウのクローズ フックは機能せず、シャットダウン フックの追加も機能しません。

テストでは、WindowListener のメソッド (windowClosing、windowClosed など) は呼び出されません。

私が受け入れた回答では、プラットフォーム固有のコード (JNI を WM_QUERYENDSESSION に登録する) を使用する必要があります。これは Swing のバグではありませんか?

http://forums.sun.com/thread.jspa?threadID=481807&messageID=2246870を参照してください。

4

4 に答える 4

3

WM_QUERYENDSESSIONメッセージにいくつかのJNIコードを書き込みます。これについての詳細は、MSDNドキュメントから、またはグーグルで入手できます。

これを行うためにあまり多くのC++コードを記述したくない場合は、ここをクリックしてJNAライブラリをお勧めします。これにより、Cコード用の優れたJava抽象化が得られます。

于 2008-09-16T13:00:55.137 に答える
1

How-do-i-get-my-Java-application-to-shutdown-nicely-in-windows

それは助けになるかもしれません

于 2008-09-16T12:57:35.003 に答える
0

上記の方が良い答えのようです。

ウィンドウシャットダウンイベントの検出に関する適切な情報が見つかりません。考えられる最善の方法は、アプリケーションが閉じようとしている天気を検出し、ウィンドウを閉じるイベントなどを使用して質問することだと思います。

http://www.javalobby.org/java/forums/t17933

于 2008-09-16T12:59:05.280 に答える
0

Javaでのシグナル処理を探してください。Windowsを閉じると、アプリケーションに信号を送信して、おそらくsigtermを終了するように求めます。

詳細については、こちらをご覧ください(私はウェブサイトの所有者ではありません)

于 2008-09-16T12:59:16.060 に答える