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) ; 关闭文件搜索