2015-09-28 23 views
0

我正在爲WPF中的窗口服務創建一個設置。該服務始終在我的系統中運行。我想獲得打印頁數。如果我打算從我的電腦上打印doc,PDF,excel等任何文檔,服務將自動計算打印頁數和當前日期時間。然後它會爲它創建日誌。如何使用WPF中的C#編碼獲取打印頁數。C#中打印頁數的跟蹤計數

回答

2

這可能會幫助你得到兩者

try 
{ 
    string PrinterJobs = "SELECT * FROM Win32_PrintJob"; 
    ManagementObjectSearcher FindPrintJobs = new ManagementObjectSearcher(PrinterJobs); 
    ManagementObjectCollection prntJobCollection = FindPrintJobs.Get(); 
    foreach (ManagementObject prntJob in prntJobCollection) 
    { 
     string jobName = prntJob.Properties["Name"].Value.ToString(); 
     string documentName = prntJob.Properties["Document"].Value.ToString(); 
     string nbcopie = prntJob.Properties["TotalPages"].Value.ToString(); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 

你也可以做對PrintMonitor – A C# print spooler monitor

看看編輯

剛剛申請IList<ManagementBaseObject>以獲取列表打印的次數在您的PC上安裝的所有網絡打印機。正如您的評論中所建議的。

try 
{ 
    IList<ManagementBaseObject> printers = new List<ManagementBaseObject>(); 
    string PrinterJobs = "SELECT * FROM Win32_PrintJob"; 
    ManagementObjectSearcher FindPrintJobs = new ManagementObjectSearcher(PrinterJobs); 
    ManagementObjectCollection prntJobCollection = FindPrintJobs.Get(); 
    foreach (ManagementObject prntJob in prntJobCollection) 
    { 
     if ((bool)printer["Network"]) 
     { 
      printers.Add(printer); 
     } 
     string jobName = prntJob.Properties["Name"].Value.ToString(); 
     string documentName = prntJob.Properties["Document"].Value.ToString(); 
     string nbcopie = prntJob.Properties["TotalPages"].Value.ToString(); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 
+0

感謝您的回覆。該編碼工作正常,但我無法獲得共享打印機。我配置了共享打印機。該打印機只有傳真,Microsoft XPS文檔編寫器,發送到一個註釋才能獲得其他打印機。這些東西只有。 – Lawrence

+0

@勞倫斯:看看編輯。由於我只理解了我的一半評論,因此我做了修改。看看它是否有幫助 –