;Автоматическая печать PDF-файлов, появляющихся в определенной папке Local $gWatchFolder, $sFoxitReader, $search, $file ;Папка, в которой скрипт ждет PDF-файлы (к этой папке (папкам) д.б. дан доступ по сети) ;$gWatchFolder = "d:\pdfPrint\" $gWatchFolder = "\\Mac\Home\Documents\pdfPrint\" ;Ищем Фоксит ридер If FileExists("c:\Program Files\Foxit Software\Foxit Reader\FoxitReader.exe") Then $sFoxitReader = "c:\Program Files\Foxit Software\Foxit Reader\FoxitReader.exe" ElseIf FileExists("c:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe") Then $sFoxitReader = "c:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe" Else MsgBox(48 + 4096, "Ошибка", "Не найдена программа Foxit Reader!") Exit EndIf ;Основной цикл While 1 Local $search = FileFindFirstFile($gWatchFolder & "*.pdf") If @error Or ($search = -1) Then ContinueLoop Local $file = FileFindNextFile($search) PrintFile($gWatchFolder & $file) Sleep(1000) WEnd Func PrintFile($pFileName) Local $pNewFileName, $PID $pNewFileName = StringReplace($pFileName, ".pdf", "_.pdf") ;Попытаемся переимновать файл, чтобы определить, дозаписан ли он до конца. ;Если не получилось, ждём 100 мс и пробуем снова, до победного. While 1 If FileMove($pFileName, $pNewFileName) Then ;запускаем печать pdf через Фоксит Ридер и ждём Local $PID = Run('"' & $sFoxitReader & '" /p "' & $pNewFileName & '"') ;Ждём 5 секунд и надеемся, что файл ушёл на принтер за эти 5 секунд Sleep(5000) ;Закрываем окно FoxitReader ProcessClose($PID) ExitLoop EndIf Sleep(100) WEnd ;удаляем файл, чтобы он повторно не печатался If Not FileDelete($pNewFileName) Then MsgBox(48 + 4096, "Ошибка", "Не удалось удалить файл " & $pNewFileName & " ! Зовите Илью!") Exit EndIf EndFunc |