Считайте пул принтеров, чтобы получить количество печатаемых страниц

У меня есть сетевой принтер в классной лаборатории. Я хотел бы вести учет того, сколько страниц напечатал каждый ученик. Я хочу знать, как я могу прочитать пул принтеров, чтобы получить количество страниц, когда студент печатает. Вот что я имею в виду: написать службу Windows, чтобы получить:

  1. Имя пользователя, вошедшего в систему
  2. Количество напечатанных каждый раз, когда они печатают документы
  3. Отправить имя пользователя + количество страниц в удаленную базу данных

Чего я не знаю:

  1. как получить количество страниц каждый раз, когда они печатаются

Если возможно, я бы хотел, чтобы это было сделано в VB.NET.

Спасибо.


person Narazana    schedule 12.08.2010    source источник


Ответы (1)


Можно использовать класс WMI Win32_PrintJob для получить информацию о каждой работе. У него есть свойства, называемые PagesPrinted и TotalPages, которые, надеюсь, дадут вам то, что вам нужно. У него также есть другие свойства, такие как Status, которые также могут иметь значение (если вы не хотите подсчитывать страницы в удаленных или неудачных заданиях и т.п.).

В этой статье содержится информация о вызове этого класса из VB.Net:
опрос вашего Запросы принтера с WMI

Просто не забудьте добавить ссылку на System.Management, поскольку она не добавляется по умолчанию в новый проект.

person Hans Olsson    schedule 13.08.2010
comment
@Azarsa Прошло много времени, поэтому я не могу вспомнить, но я предполагаю, что это должно работать так же. Пока драйвер принтера установлен, я думал, что он будет выглядеть одинаково для классов WMI. - person Hans Olsson; 19.10.2015
comment
Да, вы правы, но если удаленная машина отправляет команду печати на локальный компьютер, на котором установлен принтер, то на удаленной машине TotalPages равны нулю!. Я думаю, что мне следует использовать сокеты, не так ли? Обе системы используют класс WMI. - person Azarsa; 19.10.2015
comment
@Azarsa Вы можете использовать WMI для запроса удаленного компьютера, посмотрите на эту страницу: msdn.microsoft.com/en-us/library/aa389290(v=vs.85).aspx - person Hans Olsson; 19.10.2015