【问题标题】:How to retrieve printer icons using C#/.NET [duplicate]如何使用 C#/.NET 检索打印机图标 [重复]
【发布时间】:2012-09-01 00:43:59
【问题描述】:

可能重复:
Can I get the icon associated with an installed printer through .Net?

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

一种方法是硬编码安装了打印机的文件夹的路径,然后一个接一个地手动检索图标。这个问题已经被问到here

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

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

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

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

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

【问题讨论】:

  • 答案是决定性的。 Windows 检查已安装的驱动程序并搜索直到找到图标。
  • 我能问一下你打算用它们做什么吗?what have you tried
  • 标记的答案显示了一种从给定的 *.dll 或 *.exe 中检索图标的方法。但是,我应该从哪个 dll 或 exe 中检索它?
  • 该应用程序具有自定义打印对话框,我为此列出了可用的打印机。将打印机图标作为快速视觉帮助很有帮助。不,我正在寻找检索图标的方向。
  • 第一个解决方案听起来很有效。如果需要,我可以将其转换为 C#。

标签: c# .net printing printers


【解决方案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 LinksCreating application shortcut in a directory 创建快捷方式

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多