如何使用 C#/.NET 检索打印机图标 [重复]
Posted
技术标签:
【中文标题】如何使用 C#/.NET 检索打印机图标 [重复]【英文标题】:How to retrieve printer icons using C#/.NET [duplicate] 【发布时间】:2012-09-01 00:43:59 【问题描述】:可能重复:Can I get the icon associated with an installed printer through .Net?
如何使用 C#.NET 检索与打印机关联的图标?理想情况下,我希望在“打印机和设备”文件夹中显示图标,以便在我的应用程序中使用打印机。
一种方法是硬编码安装了打印机的文件夹的路径,然后一个接一个地手动检索图标。这个问题已经被问到here。
但是,这种方法依赖于扫描给定文件夹、获取关联的打印机、将打印机名称与检索到的打印机名称匹配并显示它们。
由于两个原因,这种方法可能不稳定:
这涉及将位置硬编码到打印机(可能因操作系统/版本而异)
无法保证显示的打印机名称与应用程序中已登记的打印机名称匹配。
是否有不涉及扫描/手动方法的编程/托管方法,但图标可以作为某些托管 .NET 对象的属性检索?
【问题讨论】:
答案是决定性的。 Windows 检查已安装的驱动程序并搜索直到找到图标。 我能问一下你打算用它们做什么吗?what have you tried 标记的答案显示了一种从给定的 *.dll 或 *.exe 中检索图标的方法。但是,我应该从哪个 dll 或 exe 中检索它? 该应用程序具有自定义打印对话框,我为此列出了可用的打印机。将打印机图标作为快速视觉帮助很有帮助。不,我正在寻找检索图标的方向。 第一个解决方案听起来很有效。如果需要,我可以将其转换为 C#。 【参考方案1】:使用KnownFolders,您或许可以获取所有已安装打印机的图标及其路径。
有这个 FOLDERID_PrintersFolder,GUID 为 76FC4E2D-D6AD-4519-A663-37BD56068185,即设备和打印机文件夹。
对于 C#,您可以在 Windows® API Code Pack for Microsoft® .NET Framework 中访问它们。
现在获取图标,你创建这个控制面板项的快捷方式,用记事本看,里面会有图标的路径。就我而言,它是'C:\Users\xxx\appdata\Local\Microsoft\Device Metadata\dmrccache\en-US\4a65bbe0-2f89-48c1-b84c-8ffdf878dc43\DeviceInformation\thinkpad.ico'。
使用Shell Links 或Creating application shortcut in a directory 创建快捷方式
【讨论】:
以上是关于如何使用 C#/.NET 检索打印机图标 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
c ++检索可执行文件的图标以在Windows注册表图标路径中使用?
如何在 ASP.NET C# 中检索程序集信息窗口的文件版本 [重复]