C # Сетевая печать - PullRequest
5 голосов
/ 06 мая 2010

Я могу получить список сетевых принтеров по этому коду:

private void Form1_Load(object sender, EventArgs e)
{
  foreach (String printer in PrinterSettings.InstalledPrinters)
  {
    listBox1.Items.Add(printer.ToString());
  }
}

Для каждого сетевого принтера я хочу получить больше информации, например: (а) получить информацию о документе, такую ​​как количество напечатанных страниц, имя файла, размер файла и т. д.

(b) получить IP-адрес компьютера, с которого был напечатан документ.

(c) получить имя пользователя, который напечатал документ.

Как мне достичь вышеуказанного? любые примеры кода будут оценены. Нужно ли изучать материалы инструментария управления Windows (WMI)?

Ответы [ 2 ]

1 голос
/ 06 мая 2010

Вы можете получить некоторую информацию через WMI:

http://msdn.microsoft.com/en-us/library/Aa394363

Если вам нужна дополнительная информация, и ваши принтеры ее поддерживают, вы можете использовать SNMP, вот статья \ библиотека, которая может помочь вам узнать, как ее использовать:

http://www.codeproject.com/KB/cs/SNMPDLL.aspx

0 голосов
/ 06 мая 2010

да, я могу получить все свойства и значения из WMI, Win32_Printer, используя приведенный ниже код, но я не смог получить основную информацию, такую ​​как (а) получить информацию о документе, такую ​​как количество напечатанных страниц, имя файла, размер файла и т. д. (б) получить IP-адрес компьютера, с которого был напечатан документ. (c) получить имя пользователя, который напечатал документ.

Код:

private void button1_Click (отправитель объекта, EventArgs e) { string printerName = "Ricoh-L4-1"; string query = string.Format ("SELECT * from Win32_Printer WHERE Name LIKE"% {0} '", имя_принтера); ManagementObjectSearcher searcher = new ManagementObjectSearcher (запрос); ManagementObjectCollection coll = searcher.Get ();

        foreach (ManagementObject printer in coll)
        {
            foreach (PropertyData property in printer.Properties)
            {
                listBox1.Items.Add(string.Format("{0}: {1}", property.Name, property.Value));
            }
        } 

    }
...