Nós temos uma solução baseada no MSAccess que está sendo executada nos computadores dos clientes e é lançada através de um script VBScript. Devido ao ambiente de rede aqui, SABEMOS que na maioria dos casos a aplicação não sobreviverá ao computador para ser colocado em standby. Isso significa que, ao retomar o computador, a conexão com o banco de dados é perdida e não recuperável.
Até encontrarmos uma maneira de reparar a conexão do banco de dados no currículo, eu gostaria de MATAR o processo quando o computador entra em espera para evitar confusão dos usuários que tentam continuar trabalhando com um aplicativo que falha quando quer acessar o db da próxima vez.
Atualmente, aguardo um Win32_PowerManagementEvent assim:
Set wmiPowerManagementEvent = GetObject("winmgmts:").ExecNotificationQuery("Select * from Win32_PowerManagementEvent")
Do
on error resume next
evt = wmiPowerManagementEvent.NextEvent(5000).EventType
on error goto 0
If evt = cntEventEnteringSuspend Then
WshShell.Run "taskkill /FI ""WINDOWTITLE eq SWEPiT*"" /FI ""IMAGENAME eq MSACCESS.EXE"" /F", 0, true
WScript.Quit
End If
Loop
Por algum motivo, isso não irá mais capturar todos os eventos, como aconteceu no WindowsXP, então presumo que haja alguma mudança de comportamento no Win7. Então, o que estou fazendo de errado ou:
Como posso fazer isso de forma confiável no Windows 7?