Цитата megaloman:
Если постановка задачи иная, не томите, изложите подробно и четко. При кривой постановке скрипты обязательно, как Вы говорите, будут лагать. И придётся забить - на корзину работать нет охоты. »
|
Постановка правильна.
Цитата:
1. Запускается первая программа "D:\Program Files\MTA Province\MTA\MTA.exe" которая запускает процесс "D:\Program Files\MTA Province\proxy_sa.exe"
2. Запускается вторая программа "C:\Program Files (x86)\Bandicam\Loader.exe" которая запускает процесс "C:\Program Files (x86)\Bandicam\bdcam.exe"
3. Пауза. Отслеживается наличие "D:\Program Files\MTA Province\proxy_sa.exe".
4. Если "D:\Program Files\MTA Province\proxy_sa.exe" отсутствует, убиваем "C:\Program Files (x86)\Bandicam\bdcam.exe". Завершаем скрипт.
5. Иначе возвращаемся на 3.
|
Такс. Создал файл "start.vbs", вписал в него такой текст:
Код:

PrgDir1 = "D:\Program Files\MTA Province" ' Папка с первой программой
PrgExe1 = "MTA\MTA.exe" ' Exe-файл первой программы
Prc1 = "proxy_sa.exe" ' Процесс запущенный первой программой
PrgDir2 = "C:\Program Files (x86)\Bandicam" ' Папка со второй программой
PrgExe2 = "Loader.exe" ' Exe-файл второй программы
Prc2 = "bdcam.exe" ' Процесс запущенный второй программой
Paus = 15 'Пауза сек
Set WMI = GetObject("winMgmts:")
Set WShell = CreateObject("WScript.Shell")
' Если Prс1 запущен, убъем его
Set Processes = WMI.ExecQuery("Select *From Win32_Process Where Name=" + """" + Prc1 + """")
For Each Process In Processes
Process.Terminate
Next
' Запустим PrgExe1
WShell.CurrentDirectory = PrgDir1
R1 = WShell.Run(PrgExe1, 7, False)
WScript.Sleep Paus * 1000
' Если Prс1 запустилась, запустим PrgExe2
Set Processes = WMI.ExecQuery("Select *From Win32_Process Where Name=" + """" + Prc1 + """")
If Processes.Count > 0 Then
WShell.CurrentDirectory = PrgDir2
R2 = WShell.Run(PrgExe2, 7, False)
Else
WScript.Quit 1
End If
' Опрашиваем. Если нет Prс1 убъем Prс2 и завершим скрипт
Do
WScript.Sleep Paus * 1000
Set Processes = WMI.ExecQuery("Select *From Win32_Process Where Name=" + """" + Prc1 + """")
If Processes.Count = 0 Then
Set Processes = WMI.ExecQuery("Select *From Win32_Process Where Name=" + """" + Prc2 + """")
For Each Process In Processes
Process.Terminate
Next
Exit Do
End If
Loop
MsgBox "Нет " + Prc1 + " и " + Prc2 + ". Скрипт завершен"
сохранил. При запуске скрипта такая ошибка.
