2013-11-28 16 views
1

我用下面的代碼要打印PDF打印或不文獻在C#

string query = string.Format("SELECT * from Win32_Printer "+ "WHERE Name LIKE '% {0}'",printerName); 
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 
ManagementObjectCollection coll = searcher.Get(); 

foreach (ManagementObject printer in coll) 
{ 
    foreach (PropertyData property in printer.Properties) 
    { 
     Logger.LogInfo(""+property.Name, "" +property.Value); 
    } 
} 

和還試圖以下來監視打印隊列:

LocalPrintServer server = new LocalPrintServer(); 
PrintQueueCollection queueCollection =  server.GetPrintQueues(); 
PrintQueue printQueue = null; 
foreach (PrintQueue pq in queueCollection) 
{ 
    if (pq.FullName == "HP LaserJet P1505n") 
     printQueue = pq; 
} 

int numberOfJobs = 0; 
if (printQueue != null) 
    numberOfJobs = printQueue.NumberOfJobs; 

我想要做的就是知道我打印使用的文檔(1)是否成功打印! (2)nd代碼片段總是顯示相同的屬性匿名和值,所以不能通知打印狀態。(3)代碼片段總是監視隊列一次並說'0'numberofjobs。

那麼取回打印狀態的實際方法是什麼?

回答

0

瞭解打印作業狀態..!試試這個,

SelectQuery qry = new SelectQuery("PrintJob"); 

    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(qry)) 
    using (ManagementObjectCollection printJobs = searcher.Get()) 
    foreach (ManagementObject printJob in printJobs) 
     { 
    string name = (string) product["Name"]; 
    string[] nameParts = name.Split(','); 
    string printerName = nameParts[0]; 
    string jobNumber = nameParts[1]; 
    string document = (string) product["Document"]; 
    string jobStatus = (string) product["JobStatus"]; 
     } 

我希望這有助於。