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

本文关键字:打印 作业状态 WMI | 更新日期: 2023-09-27 18:28:32

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

现在,我设法获得了打印状态,但前提是Keep printed Documents(请参阅附件)属性处于启用状态。但所有作业都留在打印机的队列中,我不希望这样。

是否有任何方法可以在不标记上的"保持打印文档"属性的情况下从打印机获取打印状态

打印机属性

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

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

您可以尝试使用这段代码将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();
}