列出可用的网络打印机(也未安装)[重复]
Posted
技术标签:
【中文标题】列出可用的网络打印机(也未安装)[重复]【英文标题】:List available network printers (non-installed as well) [duplicate] 【发布时间】:2015-06-10 13:27:05 【问题描述】:意味着我能够枚举所有打印机(网络和本地),但前提是它们安装在我的 PC 上
但是我希望能够列出那些未安装并且可以通过使用(Windows 内置)添加打印机对话框看到的。
是否有可能,因为我在浏览各种论坛/板(包括 stackexchange)时找不到任何有用的东西。
意思是我也尝试了内置的 .NET 类和 WMI (SELECT * from Win32_Printer
),但显然它们只列出了已安装的打印机。
提前谢谢你
编辑:请注意,建议的答案不是针对未安装的打印机,而是仅针对已安装的打印机。我已经能够列出这些。谢谢
【问题讨论】:
您可能希望更明确地说明您所谈论的“建议答案”。 [链接]***.com/questions/1018001/… 嗨,我相信这是解决方案:link 【参考方案1】:我不相信 .NET 中有任何东西可以做到这一点,您需要进行本地调用。 Here is the MSDN page 关于如何枚举网络资源,您需要做的是 P/Invoke WNetEnumResource
函数以获取 NETRESOURCE
对象。
您正在寻找具有dwType
或RESOURCETYPE_PRINT
的对象,当您找到它们时,您检查lpRemoteName
以获取打印机的名称。
这里是一个指向a example snippet 的链接,实现了它的使用(尽管 URL 声明它是 VB,但代码是 C# 中的)。我会在这里发布,但页面上的注释明确不允许未经作者许可复制和粘贴脚本。
【讨论】:
非常感谢您...它看起来很有希望,我即将测试建议的代码。会及时更新。再次感谢您 嗯,我想我无法编译该代码。我收到一些错误(方法必须有返回类型): //now call the function passing a null WNETOE(null); 我能够编译该项目。虽然我不太确定如何仅列出打印机,但工作正常。我会继续分析代码。谢谢 感谢您更新答案。非常感谢。这意味着我能够检查类型,但它们都返回 RESOURCETYPE_ANY ...虽然我可以通过“添加打印机”对话框看到未安装的打印机。有什么想法吗?以上是关于列出可用的网络打印机(也未安装)[重复]的主要内容,如果未能解决你的问题,请参考以下文章