Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


fontenette, ой, подозреваю, что это далеко не всё.

Вот пример синхронной обработки (там несколько более сложная задача, но общий принцип тот же).

Вот пример асинхронной обработки:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strProcessName

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemSink


strProcessName = "notepad.exe"

strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set objSWbemSink       = WScript.CreateObject("WbemScripting.SWbemSink","Sink_")

objSWbemServicesEx.ExecNotificationQueryAsync objSWbemSink, _
	"SELECT * FROM __InstanceOperationEvent WITHIN 1 " & _
	"WHERE TargetInstance ISA 'Win32_Process' AND " & _
	"TargetInstance.Name = '" & strProcessName & "'"

WScript.Echo "Waiting for process..."

Do
	WScript.Sleep 100
Loop

objSWbemSink.Cancel

Set objSWbemSink       = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub Sink_OnObjectReady(objSWbemObject, objSWbemAsyncContext)
	With objSWbemObject
		WScript.Echo Now(), vbTab, .Path_.Class, vbTab, .TargetInstance.Name, vbTab, .TargetInstance.ProcessID
	End With
End Sub
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:32, 27-11-2014 | #4