Что нового

Проверка существования процессов [Решено]

Tuxzer92

Новичок
Сообщения
62
Репутация
0
Здравствуйте.

Есть программа, при запуске которой, запускаются еще 6 процессов.
Пытаюсь написать скрипт для автоматизации нажатий на кнопки в этой программе.
Нужно при запуске скрипта проверять: не запущен ли какой-либо из процессов в списке и если запущен хоть один, то убить его и запустить программу по-новой.
Это нужно для избежания того, если программа уже будет запущена после запуска скрипта.
Сделал для проверки одного процесса, а как сделать проверку на все процессы?
Код:
Func LaunchCMS($script)
   If CMSIsRunning() Then
      if KillCMS() = False then
         MsgBox(64,$Title,"Не удалось завершить процесс: "&$exeFile& @CRLF&@CRLF&"Попробуйте завершить процесс вручную и запустите скрипт снова")
         Exit
      EndIf
   EndIf
   Run($sPath & " " &'"'& $etc & $FilesToEtc[$script]&'"')
   Sleep(1000)
   if CMSisRunning() = False Then
      MsgBox(64,$Title,"Не удалось запустить CMS Supervisor?"&@CRLF&"Попробуйте еще раз.")
      Exit
   EndIf
EndFunc

Func CMSIsRunning()
   ;;;
   ; Возвращает True если CMS запущен, иначе False.
   ;;;
   $process = ProcessExists($exeFile)
   If $process Then
      Return True
   EndIf
   Return False
EndFunc

Func KillCMS()
   ;;;
   ; Убивает CMS. Если он успешно убит (или более не найден), возвращает True.
   ;;;
   If CMSIsRunning() Then
      ProcessClose($exeFile)
      Sleep(1000)
      If Not CMSIsRunning() Then
         Return True
      EndIf
   EndIf
   Return False
EndFunc

Сообщение автоматически объединено:

Решено:
Код:
Func LaunchCMS($script)
   If CMSIsRunning() Then
      if KillCMS() = False then
         MsgBox(64,$Title,"Не удалось завершить процесс: "&$exeFile& @CRLF&@CRLF&"Попробуйте завершить процесс вручную и запустите скрипт снова")
         Exit
      EndIf
   EndIf
   Run($sPath & " " &'"'& $etc & $FilesToEtc[$script]&'"')
   Sleep(1000)
   if CMSisRunning() = False Then
      MsgBox(64,$Title,"Не удалось запустить CMS Supervisor?"&@CRLF&"Попробуйте еще раз.")
      Exit
   EndIf
EndFunc

Func KillCMS()
   ;;;
   ; Убивает CMS. Если он успешно убит (или более не найден), возвращает True.
   ;;;
   If CMSIsRunning() Then
      For $vElement In $CMSProc
         If ProcessExists($vElement) Then
            ProcessClose($vElement)
         EndIf
      Next
      Sleep(1000)
      If Not CMSIsRunning() Then
         Return True
      EndIf
   EndIf
   Return False
EndFunc

Func CMSIsRunning()
   ;;;
   ; Возвращает True если CMS запущен, иначе False.
   ;;;
   Local $exist=0
   For $vElement In $CMSProc
      If ProcessExists($vElement) Then
         $exist+=1
      EndIf
   Next
   If $exist == 0 Then
      Return False
   Else
      Return True
   EndIf
EndFunc
 
Последнее редактирование:
Верх