Когда задание печатается, статус последнего задания — JOB_STATUS_RETAINED, а не JOB_STATUS_PRINTED.

Я опрашиваю очередь принтера при любых изменениях, таких как JOB_CHANGE, и если я вижу, что какое-то задание исчезло, я сообщаю серверу, что задание было напечатано или удалено, в соответствии с последним статусом задания.

Проблема в том, что принтер Lexmark X945e вернул статус последнего задания только JOB_STATUS_RETAINED, но не JOB_STATUS_DELETED или JOB_STATUS_PRINTED.

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


person DevOvercome    schedule 11.11.2014    source источник
comment
Вы имеете в виду JOB_STATUS_RETAINED, когда говорите RETAINED?   -  person sashoalm    schedule 11.11.2014
comment
@DevOvercome установите атрибут принтера PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS, чтобы получить JOB_STATUS_PRINTED, но не забудьте удалить задание в очереди печати.   -  person ceyun    schedule 08.01.2019


Ответы (1)


В случае, если вы имели в виду JOB_STATUS_RETAINED, когда сказали СОХРАНЕНО, я нашел эту ссылку в документации:

Windows Vista и более поздние версии: задание осталось в очереди печати и не может быть удалено. Это может быть вызвано следующими причинами: 1) Задание было вручную сохранено вызовом SetJob, и спулер ожидает освобождения задания. 2) Печать задания еще не завершена, и печать должна быть завершена, прежде чем его можно будет автоматически удалить. Дополнительные сведения о командах задания печати см. в разделе SetJob.

Из документации SetJob:

JOB_CONTROL_RETAIN Windows Vista и более поздние версии: оставить задание в очереди после его печати. JOB_CONTROL_RELEASE Windows Vista и более поздние версии: Разблокируйте задание на печать.

Из документации кажется, что SetJob(JOB_CONTROL_RELEASE) можно использовать для освобождения задания.

person sashoalm    schedule 11.11.2014