Sachin Makwana Ответов: 1

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


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

Как я могу этого достичь?

Что я уже пробовал:

Я ищу решение, но пока не нашел ничего полезного.

Maciej Los

Почему?
Возможно,вам придется написать и установить службу windows...

Как получить статус принтера и задания печати - MSDN

1 Ответов

Рейтинг:
1

Jochen Arndt

Взгляните на статью CodeProject Мониторинг заданий в очереди принтера (.NET)[^].

Если он не отвечает всем вашим требованиям, это должно быть, по крайней мере, хорошей отправной точкой.


Sachin Makwana

Спасибо. Это полезно. Как поймать, какой документ печатается (весь файл, а не имя документа)? Вышеописанное решение дает мне имя печатаемого документа, но я не получаю прикрепленный документ или файл.

Jochen Arndt

Глубже я в него не заглядывал. Поэтому я не могу ответить.

Но я предполагаю, что получить имя файла невозможно. Очередь печати содержит данные, которые будут отправлены на принтер после подготовки приложениями. А часто и вовсе нет досье. Примеры еще не сохранены документы, печать веб-страниц или печать отчетов, созданных приложением.

Sachin Makwana

Окей.

Пожалуйста, поделитесь ссылкой, Если вы найдете "как получить данные печати"?.
я могу видеть свойство printStream при отладке выше проекта с помощью PrintingSpoolerAPI, но оно всегда равно null .

Jochen Arndt

Что вы подразумеваете под "Как получить печатные данные"?

Вам нужен доступ к необработанным данным, отправляемым на принтер?

Если да, то почему (данные относятся к конкретному принтеру)?

Sachin Makwana

Я имел в виду печать данных, которые отправляются на принтер для печати.

Jochen Arndt

Вы должны прочитать о том, как работает печать в Windows.
Например, см. http://www.undocprint.org/winspool/spool_files.
Но обратите внимание, что приведенная выше ссылка предназначена для Win 2000/XP, и там были изменения с более новой версией Windows.

Когда принтер использует режим raw, один из файлов катушки уже содержит данные для отправки на принтер. С другими режимами будет дополнительная обработка.