加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 为文件夹注册缩略图处理程序,而不是特定的文件类型

发布时间:2020-12-13 20:30:21 所属栏目:Windows 来源:网络整理
导读:我需要为给定文件夹下的所有文件编写缩略图处理程序.此文件夹是虚拟文件系统的安装点(使用 Callback File System),并且文件实际上不存在于本地计算机上(它们存储在云中),因此如果我让默认缩略图处理程序执行其工作,它会尝试从服务器下载整个文件……这显然不
我需要为给定文件夹下的所有文件编写缩略图处理程序.此文件夹是虚拟文件系统的安装点(使用 Callback File System),并且文件实际上不存在于本地计算机上(它们存储在云中),因此如果我让默认缩略图处理程序执行其工作,它会尝试从服务器下载整个文件……这显然不是我想要的.

但现在我才意识到必须按文件类型注册缩略图处理程序:

Registration of a thumbnail handler is based on standard file associations.

(自documentation起)

我不想为每种文件类型注册它,因为我不想更改不在我的虚拟文件夹中的文件的行为.有没有办法为我的虚拟文件夹中的所有文件调用我的处理程序,只有它们?

我看到两种方式让你去.

简单的方法:注册您自己的缩略图处理程序,让它适用于所有文件.如果不支持IInitializeWithStream但只支持IInitializeWithItem或IInitializeWithFile,则可以检查项目/文件是否在虚拟文件系统中.如果是这样,您可以返回缩略图,否则返回错误.

这种方法的问题是每种文件类型只能注册一个缩略图提供者.

困难的方法:您可以编写shell命名空间扩展.这些可用于显示虚拟文件夹,可以通过多种方式进行自定义.这是使用cbfs执行已经执行的操作的另一种方法,但它仅限于Explorer.它将添加另一种显示虚拟文件夹的方法.

shell命名空间扩展仅适用于它自己的虚拟文件夹.如果您将虚拟文件夹映射到驱动器号,并且用户在资源管理器中打开该驱动器(而不是shell命名空间扩展的虚拟文件夹),则用户将看到文件的常规资源管理器视图,而不是shell命名空间扩展.

另外:shell命名空间扩展的文档很痛苦,没有多少可用.我编写了自己的shell命名空间扩展,每当我查询IID的对象时,我都会跟踪并学习更多内容.我看到我的扩展名被查询为IID_IThumbnailHandlerFactory,我也看到了像IID_IExtractIconA或IID_IContextMenu这样的IID,但是我没有看到IID_IThumbnailProvider,也没有看到IID_IExtractImage.这表明您不能将自己的IThumbnailProvider直接附加到为虚拟文件夹创建的对象上,但也可能是因为我错过了在其他地方设置了一些标记,以便资源管理器甚至不会尝试查询我.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读