The_Immortal
Новичок
- Сообщения
- 84
- Репутация
- 4
Всех приветствую!
Необходимо организовать автоматическую распечатку pdf-файлов, помещаемых в определенную папку, в тихом режиме (с последующем удалением файла). На просторах рунета нашел такое простенькое решение:
Все бы хорошо, но при таком подходе каждый раз при появлении pdf-файла в целевой папке открывается FoxitReader и пока ты его не закроешь файл из папки не удалится, т.е. условие "тихого режима" не выполняется. Я сделал в конце так:
Конечно, время 5 секунд спорно (ибо бывают тяжелые файлы), но без задержки не знаю как обойтись.
Но проблема в том, что даже так процесс автоматически не убивается.
С чем это может быть связано?
Спасибо!
Необходимо организовать автоматическую распечатку pdf-файлов, помещаемых в определенную папку, в тихом режиме (с последующем удалением файла). На просторах рунета нашел такое простенькое решение:
Код:
;Папка, в которой скрипт ждет PDF-файлы (к этой папке (папкам) д.б. дан доступ по сети)
$gWatchFolder = "o:\pdfPrint\"
;Основной цикл
While true
Local $search = FileFindFirstFile($gWatchFolder & "*.pdf")
If @error Or ($search = -1) Then ContinueLoop
Local $file = FileFindNextFile($search)
PrintFile($gWatchFolder & $file)
Sleep(1000)
WEnd
;Функция печати конкретного pdf-файла
Func PrintFile($pFileName)
$pNewFileName = StringReplace( $pFileName, ".pdf", "_.pdf")
;Ищем Фоксит ридер
If FileExists("c:\Program Files\Foxit Software\Foxit Reader\FoxitReader.exe") Then
$s = """c:\Program Files\Foxit Software\Foxit Reader\FoxitReader.exe"" /p """ & $pNewFileName & """"
ElseIf FileExists("c:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe") Then
$s = """c:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"" /p """ & $pNewFileName & """"
Else
MsgBox(4096, "Не установлена программа FoxitReader!", "FoxitReader.exe does NOT exists")
Exit
EndIf
;Попытаемся переимновать файл, чтобы определить, дозаписан ли он до конца.
If FileMove($pFileName, $pNewFileName) Then
;запускаем печать pdf через Фоксит Ридер и ждём, когда процесс завершится
Local $PID = Run($s)
ProcessWaitClose($PID)
;удаляем файл, чтобы он повторно не печатался
If Not FileDelete($pNewFileName) Then
msgbox(1,"","Не удалось удалить файл " & $pNewFileName & " ! Зовите системного администратора!")
Exit
EndIf
EndIf
EndFunc
Все бы хорошо, но при таком подходе каждый раз при появлении pdf-файла в целевой папке открывается FoxitReader и пока ты его не закроешь файл из папки не удалится, т.е. условие "тихого режима" не выполняется. Я сделал в конце так:
Код:
;запускаем печать pdf через Фоксит Ридер, даем 5 секунд на ожидание и завершаем процесс
Local $PID = Run($s)
Sleep(5000)
ProcessClose($PID)
Конечно, время 5 секунд спорно (ибо бывают тяжелые файлы), но без задержки не знаю как обойтись.
Но проблема в том, что даже так процесс автоматически не убивается.
С чем это может быть связано?
Спасибо!