【问题标题】:How to receive notifications from printer/print spooler for every page while printing Excel sheets?如何在打印 Excel 表格时接收来自打印机/打印后台处理程序的通知?
【发布时间】:2011-10-11 03:32:24
【问题描述】:

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

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

请帮帮我。

感谢和问候, Sundareswaran Senthilvel

【问题讨论】:

    标签: excel printing spooler


    【解决方案1】:

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

    不过,您可以使用 WinAPI 函数 EnumJobsGetJob 来做到这一点。

    致电OpenPrinter 获取打印机句柄。

    致电GetPrinter 2 级了解职位数量。

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

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

    【讨论】:

    • 您好,肯,感谢您的回复。我遇到了 .NET PrintDocument 类,我们可以在其中设置事件的处理程序。
    猜你喜欢
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多