如何在Windows Vista和Seven中检索Windows Explorer使用的文件预览?

5

我正在开发一个Delphi文档管理应用程序,因此我希望为用户提供类似Windows资源管理器的功能。

我想知道是否有一种方法可以获取Windows资源管理器使用的预览。例如,Windows资源管理器会为PDF文档创建一个小缩略图,并在用户选择查看“大图标”时显示它。是否有一种方法可以检索该预览?

MyTImage := GiveMePreviewForFile('C:\Test\File.pdf');

可能是重复问题(第一个问题):https://dev59.com/SXRA5IYBdhLWcg3wyBD1 - Sertac Akyuz
抱歉,你说得对。我重新表达了问题。谢谢。 - UnDiUdin
2个回答

9

@user193655,使用IExtractImage接口是正确的选择,此接口公开了从Shell文件夹请求缩略图图像的方法。

您可以在此网站上找到一个非常完整的示例,源代码在这里

请查看此图片

alt text


5
目前,源代码仍可从archive.org下载:https://web.archive.org/web/20060115070800/http://www.delphi3000.com/article/3806/IExtractImageDemo.zip - Marcus Adams
请注意,来自Hans Gulo的上述代码可以工作,但非常缓慢,需要大约500到1000毫秒 :-( 当在ShObjIdlQuot.pas的第24行调用Extract函数时会出现这种缓慢。 - CaptureWiz
Hans和Microsoft都提到可以调用Kill来中止进程,但是如何做到这一点或者是否仍然会得到结果并不清楚。 - CaptureWiz
要在线程中使用 Hans Gulo 的代码,你必须首先通过调用 CoInitialize() 初始化 COM 引擎,然后通过调用 CoUninitialize() 释放它。 - CaptureWiz

2

请查看 IExtractImage 的文档。基本上,您可以使用 IShellFolder 和 IExtractImage 获取所需的图片。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接