PrintDocument (System.Drawing.Printing)를 인쇄하려고하면 printjobs의 상태를 확인하십시오.
첫 번째 단계 : printDocument를 초기화하십시오.
두 번째 단계 : System.Drawing.Printing.PrinterSettings.InstalledPrinters.Cast<string>();
에서 프린터 이름을 가져 그리고 당신의 printerDocument.PrinterSettings.PrinterName
세 번째 단계에 복사 : 인쇄 및 처분하려고합니다.
printerDocument.Print();
printerDocument.Dispose();
마지막 단계 : 작업 (UI 스레드를 차단하지 않음)에서 검사를 실행하십시오.
private bool IsPrinterOk(string name,int checkTimeInMillisec)
{
System.Collections.IList value = null;
do
{
//checkTimeInMillisec should be between 2000 and 5000
System.Threading.Thread.Sleep(checkTimeInMillisec);
using (System.Management.ManagementObjectSearcher searcher = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_PrintJob WHERE Name like '%" + name + "%'"))
{
value = null;
if (searcher.Get().Count == 0) // Number of pending document.
return true; // return because we haven't got any pending document.
else
{
foreach (System.Management.ManagementObject printer in searcher.Get())
{
value = printer.Properties.Cast<System.Management.PropertyData>().Where(p => p.Name.Equals("Status")).Select(p => p.Value).ToList();
break;
}
}
}
}
while (value.Contains("Printing") || value.Contains("UNKNOWN") || value.Contains("OK"));
return value.Contains("Error") ? false : true;
}
행운을 빕니다 : 여기
Task.Run(()=>{
if (!IsPrinterOk(printerDocument.PrinterSettings.PrinterName,checkTimeInMillisec))
{
// failed printing, do something...
}
});
의 구현입니다.
이 WPF는 어떻게 관련이 있습니까? – benPearce
안녕하세요,이 문제에 대한 해결책을 찾을 수 있었습니까? 나는 그것을 또한 직면했다. – rem
@rem - 아니요, 불행히도 이러한 속성을 작동시키는 방법을 찾지 못했습니다. 결국 내 생각에 포기했다. 애플의 상태를 표시하는 것이 문제가되지 않았기 때문이다. 대답을 찾으면 여기에 게시하십시오! –