Использование System.Drawing.Printing для получения статуса очереди
Я пытался использовать 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?
1 ответ
Благодаря 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
) в сочетании с PrintQueue
как предположил Ниссим, я могу получить доступ к информации об очереди.