【问题标题】:How to get Print Job Status using C#如何使用 C# 获取打印作业状态
【发布时间】:2011-10-20 18:15:46
【问题描述】:

我可以打印文档,但我不知道如何获取其状态。我浏览了很多资源(MSDNLinks for checking Job Status),但找不到答案。

我实际上想从打印机确认文档是否成功打印。此外,如果我能从打印机获得错误信号,例如卡纸,我也很感兴趣。

我有要打印的打印机名称和文档名称。有没有人在这方面做过一些研究,可以告诉我如何做到这一点?

【问题讨论】:

  • System.Printing 不适合 .NET 2.0 并且可能不应该适合 .NET 3.0。这并不是真正的罪魁祸首,底层的 Windows API 并不强大。调整您的要求。

标签: c# .net printing


【解决方案1】:

您也许可以为此使用 WMI。它提供了几个printing-related classes,包括Win32_PrintJob

这是未经测试的,但这样的事情应该让你开始:

SelectQuery query = new SelectQuery("Win32_PrintJob");

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
using (ManagementObjectCollection printJobs = searcher.Get())
    foreach (ManagementObject printJob in printJobs)
    {
        // The format of the Win32_PrintJob.Name property is "PrinterName,JobNumber"
        string name = (string) printJob["Name"];
        string[] nameParts = name.Split(',');
        string printerName = nameParts[0];
        string jobNumber = nameParts[1];
        string document = (string) printJob["Document"];
        string jobStatus = (string) printJob["JobStatus"];

        // Process job properties...
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多