Autoit Adobe Aerender

Я визуализирую проект Adobe After Effects с Autoit и aerender, я помещаю эту строку кода в консоль:

  aerender -project C:\aeProjects\projekt_1.aep -comp "Main" -output C:\aeProjects\output\asd.avi

Теперь, как я могу проверить, выполнен ли этот процесс, чтобы я мог безопасно возобновить другие шаги. На данный момент я просто положил сон, но я думаю, что это не очень хорошая практика.


person Ale    schedule 16.11.2015    source источник


Ответы (1)


Для этого можно использовать функцию ProcessExists.

Вот простой пример с опцией тайм-аута:

MsgBox(64, "RunCmdWait", RunCmdWait("notepad.exe"))

Func RunCmdWait($sRuncmd, $iTimeout = 10000)
    Local $iPid = Run(@ComSpec & " /c " & $sRuncmd, @ScriptDir, @SW_HIDE, 6)
    Local $hTimer = TimerInit() ; Begin the timer and store the handle in a variable.

    While 1
        Sleep(250)
        ;Returns 0 when the process is closed
        If ProcessExists($iPid) = 0 Then
            SetError(0)
            ExitLoop
        EndIf

        ;Returns 1 on time out error
        If TimerDiff($hTimer) >= $iTimeout Then
            SetError(1)
            ExitLoop
        EndIf
    WEnd

    Return @error
 EndFunc   ;==>RunCmdWait

Вот пример со StdoutRead, если вам нужно прочитать вывод:

 MsgBox(64, "StdoutRead", GetStdoutRead("dir"))

 Func GetStdoutRead($sRuncmd)
     Local $iPid = Run(@ComSpec & " /c " & $sRuncmd, @ScriptDir, @SW_HIDE, 6)
     Local $sStdoutRead = ""
     While ProcessExists($iPid)
        $sStdoutRead &= StdoutRead($iPid)
     WEnd

    Return $sStdoutRead
EndFunc   ;==>GetStdoutRead
person MrAutoIt    schedule 16.11.2015