使用 System.Drawing.Printing 获取队列状态
Using System.Drawing.Printing to get Queue Status
我一直在尝试使用 System.Drawing.Printing;
来获取网络打印机的队列状态。
我可以检索打印机的属性,但我似乎无法真正获取队列状态。
这是我目前尝试过的方法:
PrinterSettings ps = new PrinterSettings();
ps.PrinterName = "ES5461 MFP(PCL)"; // Load the appropriate printer's setting
从那里我可以看到打印机是有效的,因为 ps.IsValid
是 true
但我不能再继续了。
我也尝试过使用 System.Management
来检索状态,但我只知道如何转储信息,也没有队列信息。
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 检索队列状态(文档数量)的方法吗?
感谢 Nissim 我可以解决它:
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
我实际上可以访问队列信息。
我一直在尝试使用 System.Drawing.Printing;
来获取网络打印机的队列状态。
我可以检索打印机的属性,但我似乎无法真正获取队列状态。
这是我目前尝试过的方法:
PrinterSettings ps = new PrinterSettings();
ps.PrinterName = "ES5461 MFP(PCL)"; // Load the appropriate printer's setting
从那里我可以看到打印机是有效的,因为 ps.IsValid
是 true
但我不能再继续了。
我也尝试过使用 System.Management
来检索状态,但我只知道如何转储信息,也没有队列信息。
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 检索队列状态(文档数量)的方法吗?
感谢 Nissim 我可以解决它:
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
我实际上可以访问队列信息。