Тема: VBScript: отслеживание перехода в спящий режим
Без гарантий. Используете на свой страх и риск.
Скрипт предназначен для отслеживания перехода компьютера в спящий/ждущий режим, а также события пробуждения из этих режимов.
После запуска скрипта переведите компьютер в спящий/ждущий режим, а через некоторое время пробудите компьютер, например движением мыши и просмотрите полученное сообщение протокола.
Lang: VBScript
ОС WinMe
'--------- Без гарантий! Используете на свой страх и риск.----------
'-------------------------------------------------------------------
'Скрипт предназначен для обработки события управления питанием клиентского
'компьютера и отслеживает событие перехода в спящий/ждущий режим, а также
'событие пробуждения компьютера из этих режимов.
'-------------------------------------------------------------------
'После запуска скрипта переведите компьютер в спящий/ждущий режим, а через
'некоторое время пробудите компьютер, например движением мыши и просмотрите
'полученное сообщение протокола.
'-------------------------------------------------------------------
'Lang: VBScript
'ОС WinMe
'-------------------------------------------------------------------
EventStr="[Информация]"
HoldScript = True
'[Создание запроса WMI на обработку события]
'-------------------------------------------------------------------
Set objService = GetObject("winmgmts:\\.\Root\CIMV2")
Set objSink = WScript.CreateObject("WbemScripting.SWbemSink", "Sink_")
objService.ExecNotificationQueryAsync _
objSink, _
"SELECT * FROM Win32_PowerManagementEvent WITHIN 1"
'-------------------------------------------------------------------
MsgBox "Отслеживание включено.", vbSystemModal Or vbInformation, "Power Management"
Do
WScript.Sleep 100
If Not HoldScript Then Exit Do
Loop
objSink.Cancel()
WScript.Sleep(500)
Set objService = Nothing
Set objSink = Nothing
MsgBox "Работа завершена.", vbSystemModal Or vbInformation, "Power Management"
WScript.Quit()
'[Обработка события управления энергопитанием]
'-------------------------------------------------------------------
Sub Sink_OnObjectReady(objEvent, objContext)
e = CInt(objEvent.EventType)
t = Time 'С точностью до 1 сек
'-----------------------------------------------------------
Select Case e
Case 4 'Код перехода в ждущий/спящий режим
EventStr = EventStr & vbCRLF & vbCRLF & "Переход в спящий/ждущий режим " & "_" & t
Case 7 'Код возврата из ждущего/спящего режима
EventStr = EventStr & vbCRLF & "Возврат из спящего/ждущего режима " & "_" & t
If MsgBox(EventStr & vbCRLF & vbCRLF & "Остановить отслеживание?", _
vbSystemModal Or vbInformation Or vbYesNo, _
"Протокол события") = vbYes Then HoldScript = False
End Select
'-----------------------------------------------------------
End Sub
'-------------------------------------------------------------------