Comment puis-je détecter à partir d'une application Swing que le PC est en train de s'éteindre?

StackOverflow https://stackoverflow.com/questions/71842

  •  09-06-2019
  •  | 
  •  

Question

Les programmes Windows bien conçus doivent permettre aux utilisateurs de sauvegarder leur travail lorsqu'ils éteignent leur ordinateur.

Comment faire en sorte que mon application détecte l'événement d'arrêt? Toute solution doit permettre à l'utilisateur d'annuler l'arrêt si ce dernier sélectionne, par exemple, "Annuler".

Le crochet de fermeture de fenêtre Swing normal ne fonctionne pas, ni l'ajout d'un crochet d'arrêt.

Lors des tests, les méthodes de WindowListener (windowClosing, windowClosed, etc.) ne sont pas appelées.

La réponse que j'ai acceptée nécessite l'utilisation d'un code spécifique à la plate-forme (JNI pour s'enregistrer pour WM_QUERYENDSESSION). N'est-ce pas un bug sur Swing?

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

Était-ce utile?

La solution

Ecrivez du code JNI dans le message WM_QUERYENDSESSION. Vous pouvez obtenir des détails à ce sujet dans la documentation MSDN ou en le cherchant sur Google.

Si vous ne voulez pas écrire trop de code C ++, je peux recommander la bibliothèque JNA cliquez sur ici . Ce qui vous donne quelques belles abstractions Java pour le code C.

Autres conseils

Ce qui précède semble être la meilleure réponse.

Je ne trouve aucune information valable sur la détection des événements d'arrêt de la fenêtre. Je suppose que la meilleure méthode possible serait de détecter le temps que votre application tente de fermer, en utilisant un événement de fermeture de fenêtre ou similaire, puis posez la question.

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

Recherchez le traitement du signal en java. lorsque Windows se ferme, il envoie un signal à l'application lui demandant de mettre fin au plus probablement à un sigterm

voir ici pour plus d'informations à ce sujet (I je ne suis pas le propriétaire du site)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top