Любой язык - Как проверить что выполняется выключение компьютера а не перезагрузка ?

Аватара пользователя
Реаниматор

Re: Любой язык - Как проверить что выполняется выключение компьютера а не перезагрузка ?

Сообщение Реаниматор »

Можно счетчиком будет брать только до i=1 сообщения в журнале начиная с самого последнего события
Цитата:



по фильтру в Set colLoggedEvents = objWMIService.ExecQuery





Код:

Код: Выделить всё

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'System' and SourceName='User32' and (EventCode = '1074' or EventCode = '1076')")
For Each objEvent in colLoggedEvents
	If i=1 Then
		Exit For
	End If
		If InStr(objEvent.Message, "Тип выключения: Завершить работу") or InStr(objEvent.Message, "Тип выключения: Выключение питания")> 0 Then 
	msgbox "Выключение а не перезагрузка"
		End If
	i=i+1
Next
Аватара пользователя
Реаниматор

Re: Любой язык - Как проверить что выполняется выключение компьютера а не перезагрузка ?

Сообщение Реаниматор »

Это неправильно...

Вот так можно сделать ?

Set colLoggedEvents = objWMIService.ExecQuery("Select TOP 1 Message from Win32_NTLogEvent Where Logfile = 'System' and SourceName='User32' and (EventCode = '1074' or EventCode = '1076')")

Или

Set colLoggedEvents = objWMIService.ExecQuery("Select 1 Message from Win32_NTLogEvent Where Logfile = 'System' and SourceName='User32' and (EventCode = '1074' or EventCode = '1076')")



Вот так можно? Он тут выберет только одну запись, как ее потом можно получить без FOR. т.е. как сделать МояЗапись = colLoggedEvents.Выбрать(); или МояЗапись = colLoggedEvents.Прочитать();
Аватара пользователя
DmitriiV

Re: Любой язык - Как проверить что выполняется выключение компьютера а не перезагрузка ?

Сообщение DmitriiV »

Цитата Реаниматор:



Неважно, нужна первая запись которая отобрана по фильтру...
Любой язык - Как проверить что выполняется выключение компьютера а не перезагрузка ?




Стало быть, не самая последняя, а первая попавшаяся.

В таком случае Ваш вариант с использованием оператора Exit For полностью решает эту задачу.



Loran_rus, Реаниматор, не тратьте время попусту. В данном случае нет способа получить ссылку только на один экземпляр коллекции. Можно лишь при переборе "отсеивать" ненужные экземпляры по тому или иному признаку.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»