可能重复:
Can I get the icon associated with an installed printer through .Net?
如何使用C#.NET检索与打印机关联的图标?理想情况下,我希望在“打印机和设备”文件夹中显示图标,以便在我的应用程序中使用打印机。
一种方法是使用已安装的打印机硬编码文件夹的路径,并一个接一个地手动检索图标。已经问过这个问题here。
但是,这种方法依赖于扫描给定的文件夹,获取关联的打印机,将打印机名称与检索到的打印机名称相匹配并显示它们。
这种方法可能有点原因有两个原因:
这涉及将位置硬编码到打印机(可能因操作系统/版本而异)
无法保证显示的打印机名称与已在应用程序中登记的打印机名称一致。
是否存在不涉及扫描/手动方法的编程/托管方法,但可以检索图标作为某些托管.NET对象的属性?
答案 0 :(得分:2)
使用KnownFolders,您可以获取所有已安装打印机及其路径的图标。
这个FOLDERID_PrintersFolder的GUID为{76FC4E2D-D6AD-4519-A663-37BD56068185},它是Devices and Printers文件夹。
对于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创建快捷方式