2011-08-05 35 views
9

文書を印刷できますが、ステータスを取得する方法がわかりません。私は多くのリソース(MSDNLinks for checking Job Status)を介して行ったが、答えを見つけることができませんでした。C#を使用して印刷ジョブステータスを取得する方法

実際に文書が正常に印刷されたかどうかは、プリンタから確認したいと思っています。また、紙が詰まっているように、プリンタからエラー信号を受け取ることもできます。

印刷用に送信するプリンタ名とドキュメント名があります。誰もこの分野でいくつかの研究をして、これを達成する方法を教えてもらえますか?

+1

System.Printingは、.NET 2.0のためにカットをしなかったし、おそらく.NET 3.0のカットを行っているべきではありません。本当に責任があるわけではなく、基盤となるWindows APIは強くない。要件を決定します。 –

答えて

3

サンプルがオンラインにあります...グーグル「PJLは、C#でコマンドを送信する」(PJLは、プリンタジョブ言語の略)

CodeProjectのReading Data Directly from the Printerはあなたができることがあります

3

を開始するための素晴らしい記事/サンプルですこのためにWMIを使用します。それはWin32_PrintJobを含め、いくつかのprinting-related classes用意されています。

これはテストされていないですが、このようなものは、あなたが始める必要があります。

SelectQuery query = new SelectQuery("Win32_PrintJob"); 

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) 
using (ManagementObjectCollection printJobs = searcher.Get()) 
    foreach (ManagementObject printJob in printJobs) 
    { 
     // The format of the Win32_PrintJob.Name property is "PrinterName,JobNumber" 
     string name = (string) printJob["Name"]; 
     string[] nameParts = name.Split(','); 
     string printerName = nameParts[0]; 
     string jobNumber = nameParts[1]; 
     string document = (string) printJob["Document"]; 
     string jobStatus = (string) printJob["JobStatus"]; 

     // Process job properties... 
    } 
関連する問題