Разное - [решено] Как сделать чтобы когда я запускал ярлык запускалось две программы

Ответить
Аватара пользователя
AN9ROS

Разное - [решено] Как сделать чтобы когда я запускал ярлык запускалось две программы

Сообщение AN9ROS »

Как сделать чтобы когда я запускал ярлык запускалось две программы и когда я выхожу выходило их двух программ?
Аватара пользователя
mirror

Re: Разное - [решено] Как сделать чтобы когда я запускал ярлык запускалось две программы

Сообщение mirror »

Ну запуск 2х программ можно сделать БАТником , а вот закрытие я не знаю :С
Аватара пользователя
Iska

Re: Разное - [решено] Как сделать чтобы когда я запускал ярлык запускалось две программы

Сообщение Iska »

Например, так:



Код:

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

Option Explicit
Dim strApplication1
Dim strApplication2
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx
Dim objSWbemEventSource
Dim objSWbemObjectEx_AnEvent
Dim lngProcessID1
Dim lngProcessID2
strApplication1 = "Notepad.exe"
strApplication2 = "Calc.exe"
strComputer = "."
Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set objSWbemObjectEx   = objSWbemServicesEx.Get("Win32_Process")
If objSWbemObjectEx.Create(strApplication1, Null, Null, lngProcessID1) = 0 Then
	If objSWbemObjectEx.Create(strApplication2, Null, Null, lngProcessID2) = 0 Then
		Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
			"SELECT * FROM __InstanceDeletionEvent WITHIN 1 " & _
			"WHERE TargetInstance ISA 'Win32_Process' " & _
			"AND (TargetInstance.Handle = '" & CStr(lngProcessID1) & "' " & _
			"OR TargetInstance.Handle = '" & CStr(lngProcessID2) & "')")
		Do
			Set objSWbemObjectEx_AnEvent = objSWbemEventSource.NextEvent
			Select Case objSWbemObjectEx_AnEvent.TargetInstance.ProcessID
				Case lngProcessID1
					If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID2) & "'").Terminate(0)  0 Then
						WScript.Echo "Can't terminate process [" & objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID2) & "'").Name & "]" & vbCrLf & _
							"Close it manually"
					End If
					Exit Do
				Case lngProcessID2
					If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID1) & "'").Terminate(0)  0 Then
						WScript.Echo "Can't terminate process [" & objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID1) & "'").Name & "]" & vbCrLf & _
							"Close it manually"
					End If
					Exit Do
				Case Else
					' Nothing to do
			End Select
		Loop
		Set objSWbemObjectEx_AnEvent = Nothing
		Set objSWbemEventSource      = Nothing
	Else
		WScript.Echo "Can't create process [" & strApplication2 & "]"
	End If
Else
	WScript.Echo "Can't create process [" & strApplication1 & "]"
End If
Set objSWbemObjectEx   = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing
WScript.Quit 0

Сохраните код в файле с расширением «.vbs». Создайте на него ярлык и попробуйте исполнить. В роли «двух программ» выступают Блокнот и Калькулятор.



Если всё работает, как Вам потребно — поменяйте в коде скрипта имена исполняемых файлов Блокнота и Калькулятора:



Код:

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

strApplication1 = "Notepad.exe"
strApplication2 = "Calc.exe"

на полные пути к Вашим двум приложениям.



P.S. Снятие приложений по «.Terminate()» — «жёсткое», следствие — не сохранённые данные приложения теряются.
Ответить

Вернуться в «Microsoft Windows 2000/XP»