2

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

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

请帮我解决这个问题。

谢谢和问候, Sundareswaran Senthilvel

4

1 回答 1

0

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

但是,您可以使用 WinAPI 函数EnumJobsGetJob 来完成

调用OpenPrinter以获取打印机句柄。

调用级别 2 的GetPrinter以找出作业数。

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

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

于 2011-07-22T16:50:09.290 回答