来自非资源管理器“本机”文件的缩略图(如Windows对jpg,png等所做的)

本文关键字:jpg Windows png 略图 资源管理器 本机 文件 | 更新日期: 2023-09-27 17:55:34

我想做的是强制Windows使用我的程序作为从某种非图像文件创建缩略图的基础。

在Windows中,您可以看到来自图像,word文档,pdf等的缩略图 - 这就是我想要的其他文件类型。我可以从这些文件创建位图(稍后我想将其用作缩略图)并将它们存储在某个地方。

我的

问题是如何将扩展与创建/检查它们是否存在缩略图的请求与我的程序并返回图像/图像路径的请求联系起来。任何帮助和示例都将非常有帮助。

来自非资源管理器“本机”文件的缩略图(如Windows对jpg,png等所做的)

您需要创建一个 COM DLL 库,其中包含一个实现 IExtractImage 的类。

然后,使用以下支持的文件扩展名注册 shell扩展名:

HKEY_CLASSES_ROOT'[.ext]'shellex'[SID_IExtractImage]
@default = [MyExtractImageShellExtensionCLSID]

哪里

  • .ext是您为其创建查看器的文件的扩展名(例如 .psd
  • SID_IExtractImage是不变的{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}
  • MyExtractImageShellExtensionCLSID是实现IExtractImage的外壳扩展的类 ID (clsid

因此,如果我正在注册 Photoshop psd扩展处理程序,并且我的 COM 对象的 clsid {CCB7DB3B-D073-4606-B246-2A5174D274C8}

HKEY_CLASSES_ROOT'.psd'shellex'{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}
@default = {CCB7DB3B-D073-4606-B246-2A5174D274C8}

然后,只需创建一个实现以下功能的 COM 对象:

  • IPersist
  • IPersistFile
  • IPersistStream(可选)
  • IExtractImage

资源管理器将使用您的扩展来创建 photoshop 图像的缩略图。

注意: 如果您运行的是 64 位 Windows,则需要一个 64 位编译器来创建 64 位 COM 对象 DLL,64 位 Windows 资源管理器可以加载该 DLL。