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