Monitorando o SO (start, shutdown, hibernação, suspensão, etc...)

5 respostas
rfsilva

Estou montando um aplicativo desktop para registrar os momentos em que a máquina entra em modo hibernação/standby e retorna do mesmo (além de registrar o start/shutdown do windows).

Pesquisei bastante, mas encontrei quase nada de informação que me permitisse monitorar o Windows nesse sentido. A única coisa que achei foi o registro de um ShutdownHook em Runtime para que o meu programa seja avisado do desligamento do Windows. Para o restante dos eventos, não encontrei praticamente nada.
Alguém já precisou desenvolver alguma coisa do tipo ou teria algum material de referência ou site onde eu possa correr atrás dessa necessidade?
Obrigado!

Rodrigo

5 Respostas

E
rfsilva

Ops, esqueci de passar uma informação: em JAVA.

Obrigado!
Rodrigo

E

Sei.

Em Java você não vai escapar de usar código nativo para examinar tal tipo de coisas (a menos que você faça uma campanha grande no bugs.sun.com, também conhecido por Bug DataBase.

Eu conheço alguém que fez uma campanha bem grande no Bugs.sun.com e depois de uns 5 ou 6 anos finalmente foi atendido pela Sun - no tempo que ela ainda não tinha sido comprada pela Oracle.)

Você terá de pegar essa informação que está disponível para C++ e transformá-la em uma DLL JNI, pelo que imagino.

E

O Shutdown Hook ( http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html#addShutdownHook(java.lang.Thread) ) serve para notificar sua aplicação que ela está sendo encerrada (por exemplo, por um Ctrl+C no console). Ela não serve para você determinar se o próprio sistema operacional está sendo encerrado, embora ela também dispare pelo mesmo motivo.

rfsilva

entanglement:
Sei.

Em Java você não vai escapar de usar código nativo para examinar tal tipo de coisas (a menos que você faça uma campanha grande no bugs.sun.com, também conhecido por Bug DataBase.

Eu conheço alguém que fez uma campanha bem grande no Bugs.sun.com e depois de uns 5 ou 6 anos finalmente foi atendido pela Sun - no tempo que ela ainda não tinha sido comprada pela Oracle.)

Você terá de pegar essa informação que está disponível para C++ e transformá-la em uma DLL JNI, pelo que imagino.

Oi!

Cheguei a achar que vc estava tirando onda com o link, por isso a minha resposta. Em relação a JNI, já estava pensando nessa possibilidade, já que realmente não consegui encontrar nada relacionado ao assunto em Java.

Obrigado!
Rodrigo

Criado 19 de dezembro de 2011
Ultima resposta 19 de dez. de 2011
Respostas 5
Participantes 2