V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
geelaw
V2EX  ›  分享创造

Windows 文件预览器的使用

  •  
  •   geelaw ·
    GeeLaw · 2018-08-27 10:26:37 +08:00 · 2057 次点击
    这是一个创建于 2309 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自从 Windows Vista 开始出现的 预览处理器 是一类 Windows shell 扩展,当你在文件资源管理器中按 Alt+P,显示出来的窗格就是用来显示预览的,安装了合适的 app 后,你可以查看 PDF 的预览、Office 的预览等。Windows 自带的预览处理器可以预览文本文档、3D 模型等等。预览处理器是文件关联的一部分。

    注意:图片的预览并不是预览处理器生成的,而是缩略出提供器生成的!

    预览处理器有两个方面,一是开发者可以开发新的预览处理器,允许用户预览更多文件;另一方面是开发者可以使用预览处理器架构。

    最著名的预览处理器的使用者是 Explorer 和 Outlook。此外,所有使用 common dialog (打开 /保存文件对话框)的程序都潜在使用了预览处理器(因为你可以在 common dialog 中唤起预览窗格)。

    今天的小甜点是使用 WPF (.NET) 访问预览处理器。之所以可以用 .NET 访问预览处理器,是因为预览处理器永远是进程外的扩展(同一个进程最多加载一个版本的 CLR [这一点不完全准确] )。

    MSDN 上没有明显教学如何使用预览处理器,实际上,阅读 如何提供预览处理器 的文档就自然解答了如何消费预览处理器的问题。

    GitHub 地址:GeeLaw/PreviewHost

    我有两篇 blog 记录该过程,以及一些常见的错误。

    1. 创建 UI
    2. 查询文件关联
    3. 使用预览处理器

    通过使用自己编写的最小符合预览器规范的程序,可以检查各个预览器是否实现正确。实际检查发现 Adobe PDF 预览器、Word 预览器和 PowerPoint 预览器都有奇奇怪怪的问题:

    • PDF 预览器会拒绝传输任何键盘输入(但是文件资源管理器不受该问题的影响,应该是有什么兼容性处理);
    • PDF、PowerPoint 预览器会忽略 SetWindowSetRect 设置的左上角坐标;
    • Word 预览器会忽略 SetWindow 设置的显示范围,但对 SetRect 设置的显示范围处理正确。

    这里应该表扬 Windows 的文本预览器和 Excel 预览器,它们的实现非常正确。

    下次有空我可以写写如何在 Windows 上为其他文件提供预览(比如,我们可以做带有语法高亮的代码预览)。

    第 1 条附言  ·  2018-08-27 11:05:26 +08:00
    加一个好的预览图( Excel )

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2842 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:19 · PVG 20:19 · LAX 04:19 · JFK 07:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.