如何在打印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中find打印作业。

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

Interesting Posts