C#网络打印

时间:2010-05-06 06:50:29

标签: c# printing networking

我可以通过以下代码获取网络打印机列表:

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

对于每台网络打印机,我想提取更多信息,例如: (a)获取文件信息,如打印的页数,文件名,文件大小等。

(b)从中获取打印文档的计算机IP地址。

(c)获取谁打印文件的用户名。

我如何实现上述目标?任何代码样本将不胜感激。我是否需要研究Windows Management Instrumentation(WMI)的内容?

2 个答案:

答案 0 :(得分:1)

您可以通过WMI获取一些信息:

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

如果您想了解更多信息,并且您的打印机支持它,您可以使用SNMP,这里有一篇文章\库,可以帮助您了解如何使用它:

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

答案 1 :(得分:0)

是的,我可以使用下面的代码从WinM_Printer的WMI获取所有属性和值,但我无法检索基本信息,如 (a)获取文件信息,如打印的页数,文件名,文件大小等。 (b)从中获取打印文档的计算机IP地址。 (c)获取谁打印文件的用户名。

代码:

private void button1_Click(object sender,EventArgs e)         {             string printerName =“Ricoh-L4-1”;             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)
            {
                listBox1.Items.Add(string.Format("{0}: {1}", property.Name, property.Value));
            }
        } 

    }