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

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

Аватара для vk_k14m@vk

Старожил


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

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


Цитата 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 + ".  Скрипт завершен"
сохранил. При запуске скрипта такая ошибка.

-------
Взялся отвечать, отвечай до конца!


Последний раз редактировалось vk_k14m@vk, 04-06-2018 в 23:35.


Отправлено: 23:04, 04-06-2018 | #16