Pergunta

Programas Windows bem comportados precisam permitir que os usuários salvem seu trabalho quando desligam o PC.

Como posso fazer meu aplicativo detectar o evento de desligamento?Qualquer solução deve permitir ao usuário abortar o desligamento se o usuário selecionar, diga "Cancelar".

O gancho normal de fechamento da janela Swing não funciona, nem a adição de um gancho de desligamento.

Nos testes, os métodos de WindowListener (windowClosing, windowClosed, etc) não são chamados.

A resposta que aceitei requer o uso de código específico da plataforma (JNI para registro em WM_QUERYENDSESSION ).Isso não é um bug no Swing?

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

Foi útil?

Solução

Escreva algum código JNI na mensagem WM_QUERYENDSESSION.Você pode obter detalhes sobre isso na documentação do MSDN ou pesquisando no Google.

Se você não quiser escrever muito código C++ para fazer isso, posso recomendar a biblioteca JNA Clique aqui.O que fornece algumas boas abstrações Java para código C.

Outras dicas

O acima parece ser a melhor resposta.

Não consigo encontrar nenhuma boa informação sobre a detecção de eventos de desligamento de janelas.Acho que o melhor método possível seria detectar o clima que seu aplicativo está tentando fechar, usando um evento de fechamento de janela ou algo semelhante e, em seguida, fazer a pergunta.

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

Procure manipulação de sinal em java.quando o Windows fechar, ele enviará um sinal ao aplicativo solicitando que ele encerre, provavelmente um sigterm

ver aqui para saber mais sobre isso (não sou o proprietário do site)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top