拿起autoIt3

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) ; 关闭文件搜索
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容