如何在打印Excel工作表时从每个页面接收打印机/打印后台处理程序的通知?

时间:2011-07-22 15:10:58

标签: excel printing spooler

我在C#.NET中编写了一个Excel加载项。当用户打开Excel工作簿并在工作表上打印时,excel会执行打印。 excel只引发了一个通知,即AppEvents.Workbbok_BeforePrint()事件。之后,在打印页面之前没有为每个页面生成事件。

我已经分析了从excel方面接收通知的方法。但找不到一个。 然后我尝试了从打印机/打印后台处理程序接收通知的选项。 如何从打印机/打印假脱机程序获取通知,以便我收到每个打印页面的通知。

请帮帮我。

谢谢和问候, Sundareswaran Senthilvel

1 个答案:

答案 0 :(得分:0)

这很难做到,特别是如果打印作业中没有很多页面的话。它可能比它的价值更多的工作。 :)

但是,您可以使用WinAPI函数EnumJobsGetJob来执行此操作。

致电OpenPrinter获取打印机句柄。

使用级别2调用GetPrinter以查找作业数。

致电EnumJobs。检查JOB_INFO_1,JOB_INFO_2或JOB_INFO_3(取决于您要求的信息 - 上述其他页面上的链接以及它们告诉您的内容),直到您从Excel找到打印作业。

使用该JobID调用GetJob以获取有关打印操作当前状态的信息。