2008-09-16 4 views
2

Gut erzogene Windows-Programme müssen Benutzern erlauben, ihre Arbeit zu speichern, wenn sie den PC herunterfahren.Wie kann ich von einer Swing-App erkennen, dass der PC heruntergefahren wird?

Wie kann ich feststellen, dass meine App das Shutdown-Ereignis erkennt? Jede Lösung sollte es dem Benutzer ermöglichen, das Herunterfahren abzubrechen, wenn der Benutzer "Abbrechen" wählt.

Der normale Swing-Fenster-Schließhaken funktioniert nicht, und es wird auch kein Shutdown-Hook hinzugefügt.

Beim Testen werden die Methoden von WindowListener (windowClosing, windowClosed usw.) nicht aufgerufen.

Die Antwort, die ich akzeptiert habe, erfordert die Verwendung von plattformspezifischen Code (JNI für WM_QUERYENDSESSION registrieren). Ist das nicht ein Bug auf Swing?

Siehe http://forums.sun.com/thread.jspa?threadID=481807&messageID=2246870

+0

Verwenden Sie den Shutdown-Hook von java.lang.runtime? – mmattax

Antwort

3

schreiben einige JNI Code WM_QUERYENDSESSION Nachricht . Details hierzu erhalten Sie in der MSDN-Dokumentation oder indem Sie sie googlen. Wenn Sie nicht zu viel C++ - Code schreiben möchten, kann ich die JNA-Bibliothek click here empfehlen. Das gibt Ihnen einige nette Java-Abstraktionen für C-Code.

0

Die oben sein könnte scheint die bessere Antwort zu sein.

Ich kann keine guten Informationen zur Erkennung von Shutdown-Ereignissen finden. Ich denke, die bestmögliche Methode wäre, das Wetter zu erkennen, das Ihre Anwendung zu schließen versucht, indem Sie ein Fenster schließen oder ähnliches eingeben und dann die Frage stellen.

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

0

Geben Sie für Signal in Java Handhabung. wenn Windows schließt es wird ein Signal an die Anwendung senden sie bitten zu beenden höchstwahrscheinlich ein SIGTERM

here für mehr darüber zu sehen (ich nicht der Besitzer der Webseite am)

Verwandte Themen