1
最近我正在製作一個系統監視工具。爲此,我需要一個班來監控打印作業。 如打印開始時,是否成功,有多少頁。 我知道我可以使用winspool.drv來做到這一點。但不怎麼樣。我廣泛搜索,但沒有運氣。任何代碼/建議可能會非常有幫助。 謝謝。c#:如何監視打印作業使用winspool_drv
最近我正在製作一個系統監視工具。爲此,我需要一個班來監控打印作業。 如打印開始時,是否成功,有多少頁。 我知道我可以使用winspool.drv來做到這一點。但不怎麼樣。我廣泛搜索,但沒有運氣。任何代碼/建議可能會非常有幫助。 謝謝。c#:如何監視打印作業使用winspool_drv
嗯,我不知道winspool.drv,但您可以使用WMI來獲取打印機的狀態。以下是使用Win32_Printer的示例。
PrintDialog pd = new PrintDialog();
pd.ShowDialog();
PrintDoc.PrinterSettings = pd.PrinterSettings;
PrintDoc.PrintPage += new PrintPageEventHandler(PrintDoc_PrintPage);
PrintDoc.Print();
object status = Convert.ToUInt32(9999);
while ((uint)status != 0) // 0 being idle
{
ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_Printer where Name='" + pd.PrinterSettings.PrinterName + "'");
foreach (ManagementObject service in mos.Get())
{
status = service.Properties["PrinterState"].Value;
Thread.Sleep(50);
}
}
如果不使用PrintDialog類對象(選擇打印機),你可以運行WMI查詢,它將返回的所有打印機在系統中。
看起來像輪詢,但它減慢了系統。如果我可以hook到winspool,我可以使用事件。謝謝 – Barun 2010-09-05 06:00:47
我非常感謝你的幫助。感謝您的回覆。 – Barun 2010-09-05 06:09:23