这意味着我可以枚举所有打印机(网络和本地),但前提是它们安装在我的电脑上
但是,我希望能够列出那些未安装的并且可以通过使用(Windows 内置)“添加打印机”对话框查看的打印机。
这是否可能,因为我在浏览各种论坛/板(包括 stackexchange)时找不到任何有用的东西。
这意味着我也尝试了内置的.NET类和WMI(SELECT * from Win32_Printer
)但显然他们只列出了已安装的打印机。
提前非常感谢
编辑:请注意,建议的答案并不涉及未安装的打印机,而仅涉及已安装的打印机。我已经能够列出这些了。谢谢
我不相信 .NET 中有任何东西可以做到这一点,您将需要进行本机调用。这是 MSDN 页面 https://msdn.microsoft.com/en-us/library/windows/desktop/aa385341(v=vs.85).aspx关于如何枚举网络资源,您需要做的是 P/InvokeWNetEnumResource
函数得到NETRESOURCE https://msdn.microsoft.com/en-us/library/windows/desktop/aa385353(v=vs.85).aspx物体回来。
您正在寻找具有dwType
of RESOURCETYPE_PRINT
,当你找到它们时,你会检查lpRemoteName
获取打印机的名称。
这是一个链接实现它的使用(尽管 URL 声明它是 VB,但代码是用 C# 编写的)。我会将其发布在这里,但页面上的注释明确不允许未经作者许可复制和粘贴脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)