首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用System.Drawing.Printing获取队列状态

使用System.Drawing.Printing获取队列状态
EN

Stack Overflow用户
提问于 2015-06-16 09:05:07
回答 1查看 3.9K关注 0票数 3

为了获得网络打印机的队列状态,我一直试图使用System.Drawing.Printing;

我可以检索打印机的属性,但我似乎无法真正获得队列状态。

这就是我迄今为止尝试过的:

代码语言:javascript
复制
PrinterSettings ps = new PrinterSettings();
ps.PrinterName = "ES5461 MFP(PCL)"; // Load the appropriate printer's setting

从那里我可以看到打印机是有效的,因为ps.IsValidtrue,但是我不能更进一步。

我也尝试过使用System.Management检索状态,但我只知道如何转储信息,也没有队列信息。

代码语言:javascript
复制
string printerName = "ES5461";
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)
    {
        Console.WriteLine(string.Format("{0}: {1}", property.Name, property.Value));
    }
}

您知道使用任何.dll检索队列状态(文档数量)的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-16 10:10:55

多亏了Nissim,我才能解决它:

代码语言:javascript
复制
var printServer = new PrintServer();
var myPrintQueues = printServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });

foreach (PrintQueue pq in myPrintQueues)
{
    pq.Refresh();
    if (!pq.Name.ToLower().Contains("es5461")) continue;  
    PrintJobInfoCollection jobs = pq.GetPrintJobInfoCollection();
    foreach (PrintSystemJobInfo job in jobs)
    {
        var aux = job;
    }// end for each print job    
}// end for each print queue

如您所见,使用PrintServer (System.Printing)与Nissim建议的PrintQueue相结合,我实际上可以访问队列信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30863170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档