Basicamente, estou procurando uma maneira de executar um aplicativo quando meu laptop passar para a energia da bateria e, da mesma forma, quando retornar ao AC.
Existe um gancho interno no Windows ou um aplicativo de terceiros que me permita responder a esses eventos?
EDITAR
Analisei o TaskScheduler tentando disparar uma tarefa em um evento "power", mas nenhum evento parece ser registrado ao mudar para a bateria.
windows-7
laptop
power-management
battery
Ryan Emerle
fonte
fonte
Respostas:
Eu escrevi um aplicativo ( http://batterysaver.codeplex.com/ ) que escutará uma mensagem de alteração no modo de energia e executará ações com base em uma configuração XML.
Se alguém puder usá-lo ou ampliá-lo, então é incrível. Se houver algo melhor, publique-o.
fonte
Não conheça um comando simples que você possa executar para isso, mas o script deve poder fazer isso.
Tente interceptar o evento Win32_PowerManagementEvent no PowerShell ou WSH . O artigo tomshardware tem algum código vbscript, mas acho que você precisará de um caso para o eventtype 10 (alteração da potência). O StackOverflow tem algumas idéias em Como posso saber quando o Windows entra / sai do modo de suspensão ou de hibernação? , embora você precise estender a idéia para lidar com a alteração do estado de energia em vez de suspensão / hibernação. Você também pode encontrar algumas idéias no código da pergunta Como alguém usa o ManagementEventWatcher para acompanhar a suspensão / retomada?
Edição: Na verdade, tente algo parecido com isto. Isso é totalmente hackeado, então não é bonito. Altere as instruções de eco para fazer o que quiser, se for detectada alteração na energia CC ou CA. Correr com
cscript power.vbs
power.vbs
fonte
Adoro a abordagem de Bill, mas ele não diz como se registrar para um evento WMI no PowerShell, então veja como fazê-lo.
Se você deseja que seu código seja acionado apenas quando o estado de energia do sistema for alterado, conforme descrito aqui , use esse código.
Agora, isso será acionado sempre que o estado de energia mudar, se você conectar o dispositivo ou desconectá-lo. Portanto, você pode querer parar e fazer uma pausa para fazer a pergunta:
Felizmente, podemos fazer isso por meio da classe WMI
BatteryStatus
, então aqui está a construção completa que eu uso para executar SOMENTE uma operação quando um evento de energia é alterado e somente se não estiver mais no Power.fonte