我想要做的是强制 Windows 使用我的程序作为从某种不是图像的文件创建缩略图的基础。
在 Windows 中,您可以看到来自图像、word 文档、pdf 等的缩略图——这就是我想要的其他文件类型。我可以从这些文件中创建位图(稍后我想将其用作缩略图)并将它们存储在某个地方。
我的问题是如何将扩展与创建/检查它们是否存在与我的程序缩略图并返回图像/图像路径的请求连接起来。任何帮助和示例都会非常有帮助。
我想要做的是强制 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
clsid
是实现的 shell 扩展的类 id ( )IExtractImage
所以,如果我正在注册一个 Photoshoppsd
扩展处理程序,并且我的 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
Explorer 将使用您的扩展程序创建 Photoshop 图像的缩略图。
注意:如果您运行的是 64 位 Windows,则需要 64 位编译器来创建 64 位 COM 对象 DLL,该 64 位 Windows 资源管理器可以加载。