【发布时间】:2015-02-05 14:09:56
【问题描述】:
我们有一个打印服务器和很多打印机。我们像这样访问它们:
\\print-server-name\printer1
\\print-server-name\printer1_color
\\print-server-name\printer2
...等等。
我现在需要该服务器上所有打印机的列表。到目前为止,我只能找到机器本地安装的所有打印机。我在谷歌搜索时发现了这个,它也只给了我本地打印机:
PrintServer lps = new PrintServer();
PrintQueueCollection prQueue = lps.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Connections });
liServerPrinterNames = (from printer in prQueue select printer).ToList();
其实我只需要服务器上所有打印机的名称在一个字符串数组中,我什至不需要交互的对象,只需要所有打印机的名称作为字符串。那可能吗?怎么样?
提前感谢您的帮助!
【问题讨论】:
-
看构造函数;
new PrintServer(@"\\print-server-name"); -
你好,亚历克斯。感谢您的回复。不幸的是,这个解决方案也只返回了本地打印机。
-
我在这里找到了另一个带有示例的网站:link 但即使是那里的示例也包括这个循环:
if (Convert.ToBoolean(Printers["Network"])) // ALL NETWORK PRINTERS. { cmbNetworkPrinters.Items.Add(Printers["Name"]); }...只给了我本地打印机。这可能是某种政策限制吗?