在C#上打印事件

时间:2010-11-25 11:00:00

标签: c# printing

如何跟踪打印机的活动,例如:

  • 什么时候开始打印?
  • 打印了多少页?等

4 个答案:

答案 0 :(得分:1)

在这里解释它是如此无聊。 我建议你阅读完整的文章 http://support.microsoft.com/kb/160129

答案 1 :(得分:1)

我猜你可以使用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

答案 2 :(得分:1)

您可能希望使用FindFirstPrinterChangeNotificationFindNextPrinterChangeNotificationFindClosePrinterChangeNotification功能设置侦听打印机更改通知事件的服务。并听取PRINTER_CHANGE_JOB事件。当引发打印作业事件时,您可以从PRINTER_NOTIFY_INFO_DATA结构访问必要的作业信息。

这种方法应该采用一粒盐。我从经验中发现,当服务器负载不足时,打印机事件不可靠,同时发生许多打印作业。某些打印机事件不会触发。

显然这个解决方案需要大量的P-Invoking&编组,祝你好运。如果用C ++编写应用程序是一种选择,那么在这种情况下它可能比在C#中更容易。

答案 3 :(得分:0)

也许使用后台处理程序API来开始?我之前没有使用过这个,但我认为它会涉及相当多的P / Invoke。

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/a7160b44-0984-48c4-afef-b9a6ee4a8483