我用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来获取有关打印操作当前状态的信息。