在Windows中,资源管理器对文件的预览是通过系统PreviewHandler组件实现的,因此,想要实现自定义的PreviewHandler就需要实现一个定义了预览接口COM组件。
从Microsoft文档我们可以看到,自定义PreviewHandler需要实现以下COM接口:
A preview handler must implement the following interfaces:
IInitializeWithStream::Initialize (strongly preferred),
IInitializeWithFile, or IInitializeWithItem
IObjectWithSite
IOleWindow
IPreviewHandler
我们可以通过新建一个C++项目进行代码实现,具体代码实现可以看以下例子
https://code.msdn.microsoft.com/CppShellExtPreviewHandler-58db53b8
将项目编译后得到一个dll,这就是我们进行预览所需的COM组件了。光有dll还不行,我们需要把这个COM组件进行注册,使系统可以找到它。
注册的方式可以通过Regsvr32.exe进行自动注册,也可以手动进行注册。
进行手动注册的过程如下 :
1. 将你的dll注册到\HKEY_CLASSES_ROOT\CLSID{UDID}中
2. 将你的文件扩展名关联到该COM组件中
接下来,在资源管理器中就可以进行预览了。
但是这种方式需要使用C++进行接口实现,下一篇博文将为大家介绍如何通过C#和强大的Sharpshell进行资源管理器预览的实现。