2

可能重复:
我可以通过 .Net 获取与已安装打印机关联的图标吗?

如何使用 C#.NET 检索与打印机关联的图标?理想情况下,我希望在“打印机和设备”文件夹中显示图标,以便在我的应用程序中使用打印机。

一种方法是使用已安装的打印机对文件夹的路径进行硬编码,然后一个接一个地手动检索图标。这个问题已经在这里问过了。

但是,这种方法依赖于扫描给定文件夹、获取关联的打印机、将打印机名称与检索到的名称匹配并显示它们。

由于两个原因,这种方法可能不稳定:

  1. 这涉及将位置硬编码到打印机(可能因操作系统/版本而异)

  2. 无法保证显示的打印机名称将与应用程序中已登记的打印机名称相匹配。

是否有不涉及扫描/手动方法的编程/托管方法,但可以将图标作为某些托管 .NET 对象的属性检索?

4

1 回答 1

2

使用KnownFolders,您可能可以获得所有已安装打印机的图标及其路径。

有一个带有 GUID {76FC4E2D-D6AD-4519-A663-37BD56068185} 的 FOLDERID_PrintersFolder,它是设备和打印机文件夹。

对于 C#,您可以在Windows® API Code Pack for Microsoft® .NE​​T Framework中访问它们。

现在要获取图标,您创建此控制面板项的快捷方式,用记事本查看它,里面会有图标的路径。就我而言,它是'C:\Users\xxx\appdata\Local\Microsoft\Device Metadata\dmrccache\en-US\4a65bbe0-2f89-48c1-b84c-8ffdf878dc43\DeviceInformation\thinkpad.ico'。

使用Shell Links在目录中创建应用程序快捷方式来创建快捷方式

于 2012-09-01T17:42:00.713 回答