【问题标题】:What is the folder location of installed printers?已安装打印机的文件夹位置是什么?
【发布时间】:2012-09-01 01:23:56
【问题描述】:

我想检索已安装打印机的图标。从我可以搜索的内容来看,一种方法是检索 .dll 或 .exe 的图标并将其作为打印机的图标。但是,很容易找到通过 GUI 安装的打印机:

控制面板\硬件和声音\设备和打印机

但是,硬盘驱动器上是否有此列表的物理位置?这是动态创建的吗?

【问题讨论】:

  • 这是题外话。你可能想试试Super User。

标签: windows icons printers


【解决方案1】:

没有包含打印机列表的物理磁盘文件夹。

如果您在 shell 命名空间中有打印机的 PIDL,您可以使用 SHGetFileInfo 轻松获取其图标。获得 PIDL 有点困难,但并非不可能。

我过去曾使用枚举虚拟打印机文件夹 (CSIDL_PRINTERS) 的函数完成此操作,并将其中每个项目的名称与我正在寻找的打印机名称进行比较。当您找到匹配的名称时,您就有了 PIDL,然后您就可以获得图标。

例如(这段代码当然不完整,你需要充实它):

SHGetFolderLocation(hwnd, CSIDL_PRINTERS, 0, 0, &pidlPrinters);
SHBindToObject(0, pidlPrinters, 0, IID_IShellFolder, &psfPrinters);
psfPrinters->EnumObjects(hwnd, SHCONTF_NONFOLDERS, &pEnum);
while (pEnum->Next(1, &pidl, 0) == S_OK)
{
    psf->GetDisplayNameOf(pidl, SHGDN_NORMAL, &strName);
    StrRetToBuf(&strName, pidl, chBuf, _countof(chBuf));
    if (_wcsicmp(chBuf, pszPrinterToLookFor) == 0)
    {
        // printer matches
        // build full pidl (pidlPrinters + pidl)
        // pass to SHGetFileInfo with SHGFI_PIDL flag to get icon
    }
}

【讨论】:

  • IShellItem 会更容易一些。
猜你喜欢
  • 1970-01-01
  • 2011-02-28
  • 2021-01-05
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多