我想在.NET 4中使用C#获取排队的打印作业及其文件路径列表。我查看了this,但没有看到任何关于filepath的内容。我尝试了以下代码(从某个地方的示例修改),希望job.Name
或job.JobName
是我正在寻找的,但它不会运行:
调用GetPrintJobInfoCollection()
总是引发NullReferenceException
(打印机处于脱机状态,因此作业总是在队列中等待)。从队列中删除作业(通过单击右下角的打印机图标)时不会发生异常。
所以有两个问题:
NullReferenceException
?提前致谢!
public static void testPrinter()
{
PrintQueueCollection printQueues = null;
PrintServer printServer = new PrintServer();
printQueues = printServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });
foreach (PrintQueue printQueue in printQueues)
{
foreach (var job in printQueue.GetPrintJobInfoCollection())
{
Console.WriteLine(string.Format("jobname={0} name={1} size={2} status={3}", job.JobName, job.Name, job.JobSize, job.JobStatus));
}
}
}
答案 0 :(得分:1)
事实证明,只有在打印机脱机时才会发生异常。当打印机联机时,job.Name
提供文件路径,而job.JobName
仅显示“打印系统文档”。