美文网首页
拿起autoIt3

拿起autoIt3

作者: RPA_DORAEMON | 来源:发表于2023-12-23 21:21 被阅读0次

    RPA成规模后反倒不容易实现桌面自动化了。哎,自己动手给自己解决问题。
    虽然没有最终使用起来,备着吧。。。

    #include <FileConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <Date.au3>
    
    Local $sFolderPath = "C:\Users\Downloads\pdfs" ; 指定文件夹路径
    
    Local $search = FileFindFirstFile($sFolderPath & "\*.pdf") ; 查找所有PDF文件
    
    If $search = -1 Then
        MsgBox($MB_SYSTEMMODAL, "", "No PDF files found")
        Exit
    EndIf
    
    Local $sFilePath
    Local $sLogFilePath = "log.txt" ; 日志文件路径
    
    While 1
        $sFilePath =$sFolderPath &"\" & FileFindNextFile($search) ; 获取下一个PDF文件
    
        If @error Then ExitLoop ; 如果没有更多文件,退出循环
    
        ; 使用Run启动Acrobat Reader打开PDF文件
        Run("C:\Program Files (x86)\Adobe\Acrobat 2017\Acrobat\Acrobat.exe " & $sFilePath)
    
        ; 等待窗口激活
        WinWaitActive("[CLASS:AcrobatSDIWindow]", "", 10)
    
        ; 如果窗口未激活或超时,记录错误信息到日志文件
        If Not WinActive("[CLASS:AcrobatSDIWindow]") Then
            FileWriteLine($sLogFilePath, _Now() & ": Error opening file: " & $sFilePath)
        Else
            ; 如果窗口激活,记录成功信息到日志文件
            FileWriteLine($sLogFilePath, _Now() & ": Successfully opened file: " & $sFilePath)
            ; 尝试点击出错信息窗口的按钮(如果出现错误窗口)
            ControlClick("[CLASS:AcrobatSDIWindow]", "", "[CLASS:Button; TEXT:OK]") ; 根据实际情况修改按钮的CLASS和TEXT
        EndIf
        
        ; 等待2秒以确保PDF窗口关闭
        Sleep(2000)
        ; 等待Acrobat Reader进程出现
        Local $iTimeout = 10
        Local $iPID = ProcessExists("Acrobat.exe") ; 获取Acrobat Reader的进程ID
    
        While $iPID = 0 And $iTimeout > 0
            Sleep(1000)
            $iPID = ProcessExists("Acrobat.exe") ; 重新检查进程ID
            $iTimeout -= 1
        WEnd
    
        ; 如果Acrobat Reader进程存在,杀掉它
        If $iPID <> 0 Then
            ProcessClose($iPID)
        EndIf
    WEnd
    
    FileClose($search) ; 关闭文件搜索
    

    相关文章

      网友评论

          本文标题:拿起autoIt3

          本文链接:https://www.haomeiwen.com/subject/meycndtx.html