Что нового

Проверка наличия процесса

c-n1x

Новичок
Сообщения
26
Репутация
1
Порылся по форуму, но именно то что нужно не нашел.

Суть:

1 Нужно проверить наличие процесса
2 Если не существует, то запускаем определенную программу (не соответсвует имени процесса) и выходим из цикла, переходим к следущему шагу скрипта.
3 Если существует процесс, то ждем минуту и начинаем цикл заново.

Объясню для чего нужно, скрипт выполняет установку и настройку приложений, одно из приложении устанавливается в тихом режиме, вот и нужно знать когда оно установится, чтобы запустить следуующее.


Будет ли работать этот вариант:

Код:
While 1
    Switch @MIN
        Case '00', '5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'
            If Not ProcessExists('notepad.exe') Then
                Run('calc.exe')
                ExitLoop                              
            EndIf
    EndSwitch
    Sleep(5000)
WEnd



Вроде работает !!!!
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
c-n1x [?]
1 Нужно проверить наличие процесса
2 Если не существует, то запускаем определенную программу (не соответсвует имени процесса) и выходим из цикла, переходим к следущему шагу скрипта.
3 Если существует процесс, то ждем минуту и начинаем цикл заново.
Код:
Global $iIndex = 0
AdlibRegister("_Check")

While 1
	If $iIndex Then
		$iIndex = Not $iIndex
		; Next setup
		Exit
	EndIf
	Sleep(250)
WEnd

Func _Check()
	
	If Not ProcessExists('notepad.exe') Then
		Run('calc.exe')
		AdlibUnRegister("_Check")
		$iIndex = Not $iIndex
	EndIf
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
c-n1x,
А если так?
Код:
Dim $aProg[4] = [3, 'notepad.exe', 'calc.exe', @ProgramFilesDir & '\AutoIt3\Au3Info.exe']

AdlibRegister('_Close', 3000);чтобы имитировать процесс установки

For $i = 1 To $aProg[0]
	RunWait($aProg[$i])
Next
AdlibUnRegister('_Close')
MsgBox(64, 'Info', 'Все')

Func _Close()
	Local $aClose[4] = [3, '[Class:Notepad]', '[Class:SciCalc]', '[Class:Au3Info]']
	For $i = 1 To $aClose[0]
		If WinExists($aClose[$i]) Then WinClose($aClose[$i])
	Next
EndFunc   ;==>_Close
 
Автор
C

c-n1x

Новичок
Сообщения
26
Репутация
1
madmasles:
Пробовать не стал.
В моем варианте меньше кода, да и работает стабильно =)
 
Верх