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

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

Ветеран


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

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


Ясно. Для данного сценария Калькулятор и Блокнот в качестве образца не вполне годятся, поскольку запускать второй из-под первого практически невозможно несколько затруднительно . Попробуйте так (сейчас посмотрел — вот страшилище ):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strPath1, strPath2

Dim objSWbemServicesEx

Dim objSWbemObjectEx
Dim lngProcessID


strPath1 = "C:\Program Files\totalcmd\TOTALCMD64.EXE"
strPath2 = "c:\Windows\System32\Notepad.exe"

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
	Do
		If .Get("Win32_Process").Create(strPath1, Null, Null, lngProcessID) = 0 Then
			.ExecNotificationQuery( _
				"SELECT * FROM __InstanceDeletionEvent WITHIN 1 " & _
				"WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.ProcessID = " & CStr( _
					.ExecNotificationQuery( _
						"SELECT * FROM __InstanceCreationEvent WITHIN 1 " & _
						"WHERE TargetInstance ISA 'Win32_Process' AND " & _
						"TargetInstance.ExecutablePath = '" & Replace(strPath2, "\", "\\") & "' AND " & _
						"TargetInstance.ParentProcessId = " & CStr(lngProcessID) _
					).NextEvent.TargetInstance.ProcessID _
				) _
			).NextEvent
			
			.Get("Win32_Process.Handle=" & CStr(lngProcessID)).Terminate
		Else
			WScript.Echo "Can't execute process [" & strPath1 & "]."
			
			Exit Do
		End If
	Loop
End With

WScript.Quit 0

Отправлено: 11:24, 26-09-2016 | #5