Назад | Перейти на главную страницу

Печать заданий на печать Windows в порядке отправки

Кто-нибудь знает о каких-либо настройках или стороннем программном обеспечении, которое заставляет печатать задания на печать в том порядке, в котором они были отправлены?

Я наткнулся на эту проблему. В моем случае использования у меня был сценарий, который перебирал все файлы в каталоге и вызывал для них команду «Печать» с помощью ShellExecute. (Таким образом, имитируйте, как пользователь просматривает каждый из них, щелкая правой кнопкой мыши и затем выбирая «печать».)

Результаты хороши, когда вы работаете только с небольшим количеством документов, но с десятками или сотнями всегда есть несколько вышедших из строя.

Трудно сказать, связана ли проблема с программой, обрабатывающей команду «print», или с самой очередью. (В моем случае каждый раз, когда я вызываю print, я, вероятно, вызываю новый экземпляр программы, используемой для печати. ​​Это означает, что капризы времени выполнения / планирования могут означать, что программа «print» для документа № 2 фактически отправляет задание в очередь перед документом №1.)

Похоже, что с очередью тоже что-то происходит.

Я создал программу, которая печатает документы, наблюдая за очередью. Первая версия работала следующим образом:

  1. ShellExecuteEx для печати документа
  2. Подождите, пока документ появится в очереди печати
  3. Распечатать следующий документ

В этой версии некоторые документы все равно будут распечатываться не по порядку. Вторая версия оказалась той, которая сработала:

  1. ShellExecuteEx для печати документа
  2. Подождите, пока документ появится в очереди печати
  3. Дождитесь завершения буферизации (PrintSystemJobInfo.IsSpooling == статус false в .NET)
  4. Распечатать следующий документ

Эта вторая версия распечатывает документы каждый раз по порядку. Это заставляет меня думать, что когда вы отправляете кучу документов, наступает странный период, когда идет гонка за тем, какой из них будет поставлен в очередь первым.

Однако я не знаком с тонкостями системы печати Windows. Может случиться так, что задание появляется до того, как генерирующая его программа отправит все данные. Это означало бы, что причиной проблемы могло быть переменное время выполнения программы, стоящее за командой «print».