Pergunta

É possível fazer um manipulador que fará algo quando o usuário desligar o computador com Java no Windows XP (opcional, Win7)? Como?

Obrigado.

Foi útil?

Solução

É possível adicionar um gancho de desligamento ao seu programa Java, que é invocado se a JVM estiver desligada por qualquer motivo (outro que não seja System.exit()) incluindo desligamento de O/S. É isso que você quer?

Usar: java.lang.Runtime.addShutdownHook(Thread):

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        // shutdown code here
        }
    });

Outras dicas

Um gancho de desligamento deve fazer o trabalho.

A partir de API Doc:

Registra um novo gancho de desligamento da máquina virtual. A máquina virtual Java é desligada em resposta a dois tipos de eventos:

  • O programa sai normalmente, quando o último thread não daemon sai ou quando o método de saída (equivalente, System.Exit) é invocado, ou
  • A máquina virtual é encerrada em resposta a uma interrupção do usuário, como digitar ^C ou um evento em todo o sistema, como logoff do usuário ou desligamento do sistema.
Runtime.getRuntime().addShutdownHook(new Thread() {
  public void run() {
    // do something
  }
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top