У нас есть решение на основе MSAccess, работающее на компьютерах клиентов и использующее VBScript-скрипт. Из-за окружающей среды сети мы ЗНАЕМ, что в большинстве случаев приложение не будет работать на компьютере, который будет переведен в режим ожидания. Это означает, что при возобновлении работы компьютера соединение с базой данных теряется и не подлежит восстановлению.

Пока мы не найдем способ восстановить db-соединение при возобновлении, я хотел бы УБИТЬ процесс, когда компьютер переходит в режим ожидания, чтобы избежать путаницы с пользователями, которые пытаются продолжить работу с приложением, которое перестает работать, когда оно хочет получить доступ к БД в следующий раз. время.

В настоящее время я жду Win32_PowerManagementEvent, как это:

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

По какой-то причине это больше не будет перехватывать все события, как это было в WindowsXP, поэтому я предполагаю некоторое изменение поведения в Win7. Итак, что я делаю не так или:

Как я могу сделать это, надежно, на Windows 7?

0