Как я могу отслеживать деятельность принтера, таких как:Печать событий на C#
- Когда начать печать?
- Сколько страниц было распечатано? и т. д.
Как я могу отслеживать деятельность принтера, таких как:Печать событий на C#
Возможно, использовать API-буфер спулера? Раньше я не использовал это, но я считаю, что это потребует значительного количества P/Invoke.
объяснить это здесь настолько скучный. Я предлагаю вам прочитать полную статью http://support.microsoft.com/kb/160129
Я думаю, вы могли бы использовать WMI.
Вот блог-запись о получении принтера-инфо с помощью WMI: http://aleemkhan.wordpress.com/2005/09/20/getting-printer-information-through-wmi/
Вот код на получение событий принтера (в VB.Net, хотя): http://social.technet.microsoft.com/Forums/en/ITCG/thread/71258e18-5516-4a90-be76-5b83855b2841
Вы хотели бы установить служба, которая прослушивает события уведомления об изменении принтера, используя функции FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification и FindClosePrinterChangeNotification. И прислушайтесь к событию PRINTER_CHANGE_JOB. Когда событие задания печати будет поднято, вы можете получить доступ к необходимой информации о задании из структуры PRINTER_NOTIFY_INFO_DATA.
Этот метод следует принимать с солью. По опыту я обнаружил, что события принтеров ненадежны, когда сервер находится под нагрузкой, при этом одновременно выполняется множество заданий на печать. Некоторые события принтера не срабатывают.
Очевидно, что для этого решения потребуется много P-Invoking & Marshalling, так что я желаю вам удачи. Если запись приложения на C++ является вариантом, в этом случае, вероятно, будет проще, чем в C#.
Страницы, напечатанные в вашей заявке, или страницы, напечатанные повсеместно? Некоторые детали будут оценены здесь. – 2010-11-25 11:01:14
отпечатано отовсюду – emirate 2010-11-25 11:02:50
можете ли вы опубликовать исходный код своей функции печати? – 2010-11-25 11:06:08