Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   [решено] Как сделать чтобы когда я запускал ярлык запускалось две программы (http://forum.oszone.net/showthread.php?t=217318)

AN9ROS 06-10-2011 18:20 1767548

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

mirror 06-10-2011 18:51 1767570

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

Iska 07-10-2011 01:34 1767760

Например, так:
Код:

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()» — «жёсткое», следствие — не сохранённые данные приложения теряются.

AN9ROS 07-10-2011 17:14 1768131

Iska, Спасибо!


Время: 18:14.

Время: 18:14.
© OSzone.net 2001-