gpt4 book ai didi

c# - 获取网络中所有可用的打印机 - 而不仅仅是本地打印机

转载 作者:行者123 更新时间:2023-11-30 20:57:15 36 4
gpt4 key购买 nike

我一直在尝试查找网络中的所有打印机。但是,我总是找到已经与我的计算机连接的打印机。当我尝试添加打印机时控制面板\硬件和声音\设备和打印机,我可以在网络中找到更多可用的打印机。

请注意我没有打印机服务器。所有打印机均基于 IP。

我使用了以下代码:

WqlObjectQuery wQuery = new WqlObjectQuery("SELECT * FROM Win32_Printer Where " +
"Local = FALSE");
ManagementObjectSearcher res = new ManagementObjectSearcher(wQuery);
if ((res.Get().Count > 0))
{
foreach (ManagementObject printer in res.Get())
{
Console.WriteLine(printer["PortName"] + " : " + printer["DriverName"] +
" : " + printer["Status"]);
}
}
else { Console.WriteLine("No printers found"); }

在查询中,如果我将 local 设置为 true,我会在我的计算机上安装打印机。

我也在这里尝试过类似的问题,但仍然没有运气。

感谢任何帮助。

最佳答案

WMI 无法枚举网络打印机,只能列出在 native 注册的共享打印机。对于此任务,您可以使用 WNetEnumResource , WNetOpenEnumWNetCloseEnum WinApi 函数。前段时间我使用 .Net 编写了一个示例试试这篇文章 Enumerating All Network resources using Delphi Prism ,代码使用 Oxygene 语言,但可以轻松翻译成 C#。

关于c# - 获取网络中所有可用的打印机 - 而不仅仅是本地打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16961476/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com