2011-07-22 58 views
2

我已经在C#.NET中编写了一个Excel加载项。当用户打开Excel工作簿并在工作表上打印时,Excel会打印。只有一个通知是由excel引发的,即AppEvents.Workbbok_BeforePrint()事件。之后,在打印页面之前不会为每个页面生成事件。如何在打印Excel表单时从打印机/打印后台处理程序接收每页的通知?

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

请帮我解决这个问题。

感谢和问候, Sundareswaran Senthilvel

回答

0

这是很难做到的,尤其是如果没有大量的打印作业的页面。这可能比它的价值更多的工作。 :)

但是,您可以使用WinAPI功能EnumJobsGetJob

致电OpenPrinter获取打印机句柄。

拨打电话GetPrinter与级别2找出工作的数量。

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

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

+0

嗨肯,谢谢你的回复。我遇到了.NET PrintDocument类,我们可以为事件设置处理程序。 – Eshwar