intWakeupMaxCount = 15 intWakeupCount = 0 strComputer = "." strProcessKill = "'SageTV.exe'" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ ("Select * from Win32_PowerManagementEvent") Set WshShell = WScript.CreateObject("WScript.Shell") Do Set strLatestEvent = colMonitoredEvents.NextEvent if strLatestEvent.EventType = 4 then 'Entering Suspend/Standby/Hibernate 'Stop SageTV Client Set colProcess = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name = " & strProcessKill ) For Each objProcess in colProcess objProcess.Terminate() Next elseif strLatestEvent.EventType = 18 then 'resume automatic WScript.Sleep 3000 'Wait 3 seconds if intWakeupCount > intWakeupMaxCount then 'reboot ShutDown else 'Restart SageTV service iReturn = WshShell.Run("%COMSPEC% /C net stop SageTV", 1, TRUE) iReturn = WshShell.Run("%COMSPEC% /C net stop WinVNC4", 1, TRUE) WScript.Sleep 3000 iReturn = WshShell.Run("%COMSPEC% /C net start WinVNC4", 1, TRUE) iReturn = WshShell.Run("%COMSPEC% /C net start SageTV", 1, TRUE) 'Start SageTV Client 'WScript.Sleep 5000 intWakeupCount = intWakeupCount + 1 'WshShell.run """c:\program files\sagetv\sagetv\sagetv.exe""" end if end if Loop Sub ShutDown() Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true") for each OpSys in OpSysSet OpSys.Win32ShutDown (2) next End Sub