2010-11-25 2 views
0

Как я могу отслеживать деятельность принтера, таких как:Печать событий на C#

  • Когда начать печать?
  • Сколько страниц было распечатано? и т. д.
+1

Страницы, напечатанные в вашей заявке, или страницы, напечатанные повсеместно? Некоторые детали будут оценены здесь. – 2010-11-25 11:01:14

+0

отпечатано отовсюду – emirate 2010-11-25 11:02:50

+0

можете ли вы опубликовать исходный код своей функции печати? – 2010-11-25 11:06:08

ответ

1

Вы хотели бы установить служба, которая прослушивает события уведомления об изменении принтера, используя функции FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification и FindClosePrinterChangeNotification. И прислушайтесь к событию PRINTER_CHANGE_JOB. Когда событие задания печати будет поднято, вы можете получить доступ к необходимой информации о задании из структуры PRINTER_NOTIFY_INFO_DATA.

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

Очевидно, что для этого решения потребуется много P-Invoking & Marshalling, так что я желаю вам удачи. Если запись приложения на C++ является вариантом, в этом случае, вероятно, будет проще, чем в C#.

Смежные вопросы