我可以通过使用WMI和 ManagementEventWatcher
从 Win32_PrintJob
获取打印作业信息,但我似乎无法找到打印机名称 . 我也查看了这个Win32_PrintJob文档,与打印机名称最接近的是 DriverName
属性,但它是打印机驱动程序名称,而不是控制面板的设备和打印机中显示的打印机名称 .
因此,如 Headers 中所述,如何从 Win32_PrintJob
获取打印作业的打印机名称?
这是我到目前为止获得打印作业的部分代码:
public void PrintHelperInstance_OnPrintJobChange(object sender, EventArrivedEventArgs e)
{
ManagementBaseObject objProps = (ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value;
string jobName = objProps["Document"].ToString();
if (jobName == "Test Print Form")
{
if (!IsFoundPrintJob)
{
IsFoundPrintJob = true;
}
CurrentJobStatus = (string)objProps["JobStatus"];
if (CurrentJobStatus != PreviousJobStatus)
{
uint jobId = (uint)objProps["JobId"];
string jobPrinter = (string)objProps["DriverName"];
string jobHost = (string)objProps["HostPrintQueue"];
string jobStatus = (string)objProps["JobStatus"];
PreviousJobStatus = CurrentJobStatus;
}
}
}
1 回答
您可以使用此代码: