Domanda

I programmi Windows ben educati devono consentire agli utenti di salvare il proprio lavoro quando spengono il PC.

Come posso fare in modo che la mia app rilevi l'evento di arresto?Qualsiasi soluzione dovrebbe consentire all'utente di interrompere lo spegnimento se l'utente seleziona, ad esempio "Annulla".

Il normale gancio di chiusura della finestra a battente non funziona, così come l'aggiunta di un gancio di spegnimento.

Durante i test, i metodi di WindowListener (windowClosing, windowClosed, ecc.) non vengono chiamati.

La risposta che ho accettato richiede l'uso del codice specifico della piattaforma (JNI per registrarsi per WM_QUERYENDSESSION ).Non è un bug di Swing?

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

È stato utile?

Soluzione

Scrivi del codice JNI nel messaggio WM_QUERYENDSESSION.Puoi ottenere dettagli al riguardo dalla documentazione MSDN o cercando su Google.

Se non vuoi scrivere troppo codice C++ per farlo, posso consigliare la libreria JNA clicca qui.Il che ti dà alcune belle astrazioni Java per il codice C.

Altri suggerimenti

Quanto sopra sembra essere la risposta migliore.

Non riesco a trovare informazioni valide sul rilevamento degli eventi di arresto delle finestre.Immagino che il metodo migliore sarebbe rilevare il tempo che la tua applicazione sta tentando di chiudere, utilizzando un evento di chiusura della finestra o simili, quindi porre la domanda.

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

Cerca la gestione del segnale in Java.quando Windows si chiude invierà un segnale all'applicazione chiedendogli di terminare molto probabilmente un sigterm

Vedere Qui per saperne di più (non sono il proprietario del sito)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top