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

时间:2015-12-31 11:11:16

标签: c# printing wmi

我正在使用WMI使用带有C#代码的WMI来获取Print-Job状态。 现在,我从打印机旁边的获取了所有different statuses ,这对我来说非常重要,因为我知道作业何时完成了打印作业。

现在,我设法获得了打印状态,但前提是保留打印文档(请参阅附件)属性。但是所有的工作都停留在打印机的队列中,我不希望这样。

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

Printer Properties

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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();
}