如何使用C#获取打印作业状态

Sha*_*ain 9 .net c# printing

我能够打印文档,但我不知道如何获得它的状态.我经历了很多资源(MSDN,用于检查工作状态的链接),但无法找到答案.

我实际上想要从打印机确认文档是否已成功打印.此外,我也很感兴趣,如果我可以从打印机获得错误信号,就像纸张被卡住一样.

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

BAC*_*CON 7

您也许可以使用 WMI 来实现此目的。它提供了几个与打印相关的类,包括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...
    }
Run Code Online (Sandbox Code Playgroud)