2011-08-05 55 views
9

我可以打印文檔,但我不知道如何獲取其狀態。我經歷了許多資源(MSDN,Links for checking Job Status),但無法找到答案。如何使用C獲得打印作業狀態

我實際上想從打印機得到確認文檔是否成功打印。此外,如果我可以從打印機得到錯誤信號,例如紙張被卡住,我也很感興趣。

我有打印機名稱和文檔名稱,我正在發送打印。有沒有人在這個領域做過一些研究,可以告訴我如何做到這一點?

+1

System.Printing沒有獲得晉級的.NET 2.0,也許不應該做出的削減.NET 3.0。這並不是真正的責任,底層的Windows API並不強大。取消你的要求。 –

回答

3

你也許能夠爲此使用WMI。它提供了幾個printing-related classes,包括Win32_PrintJob

這是未經測試,但這樣的事情應該讓你開始:

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... 
    } 
相關問題