如何在打印Excel表格时从打印机/打印假脱机程序接收每页的通知



我用c# . net编写了一个Excel插件。当用户打开Excel工作簿并在工作表上打印时,Excel就会打印。只有一个通知会被excel引发,那就是AppEvents.Workbbok_BeforePrint()事件。在此之后,在打印页面之前,不会为每个页面生成任何事件。

我分析了从excel端接收通知的方法。但是找不到。然后我尝试了从打印机/打印假脱机程序接收通知的选项。我如何从打印机/打印假脱机程序获得通知,以便我收到打印的每一页的通知。

请帮我解决这个问题。

谢谢Sundareswaran Senthilvel

这很难做到,特别是在打印作业中没有很多页面的情况下。这可能比它的价值更费功夫。:)

但是,您可以使用WinAPI函数EnumJobs和GetJob来实现。

调用OpenPrinter获取打印机句柄。

调用级别为2的GetPrinter来查找作业的数量。

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

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

最新更新