PrintQueue.Refresh не показывает состояние принтераC#

Место общения программистов C#
Ответить
Anonymous
 PrintQueue.Refresh не показывает состояние принтера

Сообщение Anonymous »

Мне нужно запустить службу Windows на сервере X, чтобы показать состояние всех принтеров: нет бумаги, нет тонера и т. д.
Служба работает на машине, но, конечно, не все принтеры установлены на ней. это. Даже когда принтеры установлены на аппарате, мы НЕ имеем статуса принтеров!

Единственное, что мне удалось сделать, это вынуть бумагу, распечатать тестовую страницу (блокнот), и теперь я вижу, что мне не хватает бумаги с код ниже, но, как вы понимаете, это невозможно: я не хочу отправлять тестовую страницу на все принтеры в сети каждые 10 минут или около того!

Я пытаюсь запросить PrintQueue.Refresh, но статус не обновляется, я не вижу, что лоток принтера открыт (или отсутствует бумага, или нет тонера, что бы я ни делал с принтером.)
Кстати, Win32_printer не работает не покажет мне лучший результат.

ПРИМЕЧАНИЕ.
  • MonitoringWS — это веб-сервис, который может получить доступ к базе данных.
  • Принтеры — это список принтеров, которые мы хотим запросить.
Это то, что я пытаюсь сделать.

var printServers = GetListOfPrinterServers();
var listPrinters = printers as List ?? printers.ToList();
foreach (
var printServer in
printServers.Select(
server => new PrintServer(server, PrintSystemDesiredAccess.EnumerateServer)))
{
printServer.Refresh();
var printQueues = printServer.GetPrintQueues();
foreach (var printQueue in printQueues)
{
var queue = printQueue;
var printersFound = listPrinters.Where(p =>
string.Equals(p.PrinterName, queue.FullName,
StringComparison.OrdinalIgnoreCase));
foreach (var printer in printersFound)
{
printQueue.Refresh();

Debug.WriteLine(string.Format("{0} {1}", printQueue.FullName, printQueue.HostingPrintServer.Name) );
var pm = new MonitoringWS.PrinterMonitoring
{
FkPrinter = printer.PkPrinter,
QueueStatus = printQueue.QueueStatus,
DriverName = printQueue.QueueDriver.Name,
MonitoringDateTime = DateTime.Now
};

printerMonitorings.Add(pm);
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/488 ... of-printer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»