首页 文章

WMI不使用C#发送打印作业状态

提问于
浏览
0

我'm using WMI to get Print-Job statuses using WMI with C# code. now, I'从打印机 beside printed 获取所有different statuses,这对我来说非常重要,因为我知道作业何时完成了打印作业 .

现在,我设法获得打印状态,但仅当 Keep printed Documents (请参阅附件)属性打开时 . 但所有的工作都停留在打印机的队列中,我不希望这样 .

是否有任何方法可以从打印机获取打印状态而不标记保持打印文档属性

Printer Properties

2 回答

  • 0

    我不确定我明白了 . 您需要一个像 DispatcherTimer 这样的计时器来设置请求的间隔 . 在 Tick 中,您可以检查打印机的状态是否已更改 . 那是你要的吗?

  • 0

    您可以尝试使用这段代码将 KeepPrintedJobs 属性设置为 true .

    string searchQuery = "SELECT * FROM Win32_Printer";
    ManagementObjectSearcher searchPrinters = new 
    ManagementObjectSearcher(searchQuery);
    ManagementObjectCollection printerCollection = searchPrinters.Get();
    
    foreach (ManagementObject printer in printerCollection)
    {
        PropertyDataCollection printerProperties = printer.Properties;
        foreach (PropertyData property in printerProperties)
        {
            if (property.Name == "KeepPrintedJobs")
            {
                printerProperties[property.Name].Value = true;
            }
        }
        printer.Put();
    }
    

相关问题