来自非资源管理器“本机”文件的缩略图(如Windows对jpg,png等所做的)
本文关键字:jpg Windows png 略图 资源管理器 本机 文件 | 更新日期: 2023-09-27 17:55:34
我想做的是强制Windows使用我的程序作为从某种非图像文件创建缩略图的基础。
在Windows中,您可以看到来自图像,word文档,pdf等的缩略图 - 这就是我想要的其他文件类型。我可以从这些文件创建位图(稍后我想将其用作缩略图)并将它们存储在某个地方。
我的问题是如何将扩展与创建/检查它们是否存在缩略图的请求与我的程序并返回图像/图像路径的请求联系起来。任何帮助和示例都将非常有帮助。
您需要创建一个 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。