首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autoit Adobe aerender

Autoit Adobe aerender
EN

Stack Overflow用户
提问于 2015-11-16 16:55:02
回答 1查看 162关注 0票数 0

我正在渲染一个Adobe After Effects项目,使用Autoit和aerender,我将这行代码放在控制台中:

代码语言:javascript
复制
  aerender -project C:\aeProjects\projekt_1.aep -comp "Main" -output C:\aeProjects\output\asd.avi

现在,我如何检查此过程是否已完成,以便可以安全地继续执行其他步骤。目前我只是睡了一觉,但我认为这不是一个好的做法。

EN

回答 1

Stack Overflow用户

发布于 2015-11-16 22:57:12

您可以使用ProcessExists函数来完成此操作。

下面是一个带有超时选项的简单示例:

代码语言:javascript
复制
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的示例:

代码语言:javascript
复制
 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33731448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档