2

我同时安装了 InDesign CS2 和 CS3。两者都使用扩展名为 .indd 的文件。Windows 如何知道使用哪个图标?它使用正确的图标,即 CS2 文件有 cs2 图标,而 CS3 文件有 CS3 图标。

Windows 如何知道如何执行此操作?

以及如何在我的程序中提取或使用这个版本检测系统?

编辑:

感谢您对 shell-extension-icon-handler 的回答。对我来说有些新东西。但是有什么方法可以连接到 InDesign 提供的 IconHandler 并使用它来检测 InDesign 文件的版本?

4

3 回答 3

5

您需要编写一个图标处理程序外壳扩展。请参阅MSDN文档以获取IExtractIcon. 基本机制是您创建一个外壳扩展并为您想要的文件类型注册图标处理程序(查看 HKEY_CLASSES_ROOT/.indd),然后外壳加载您的处理程序,传递文件信息并请求一个图标作为回报。如果您想提供缩略图位图而不仅仅是图标,还有IExtractImage方法。

请注意,您需要特别小心地编写 shell 扩展处理程序,因为任何内存泄漏或崩溃都会破坏资源管理器和任何其他显示文件打开/保存对话框的应用程序。

于 2010-02-25T18:06:55.663 回答
2

对于某些文件,它是HKEY_CLASSES_ROOT\<file extension here>\DefaultIcon注册表项,但大多数文件映射到更友好的名称,例如.pdf\(Default)-> AcroExch.Document(如果安装了 Adob​​e Reader)。

在这种情况下,您必须沿着注册表AcroExch.Document查看

  • DefaultIcon就在那儿
  • AcroExch.Document\CLSID\(Default)是一些 GUID。然后,跟随HKEY_CLASSES_ROOT\CLSID\<insert that guid here>,你会注意到这个键包含DefaultIcon

...并且DefaultIcon是从中加载图标的位置。

希望这已经足够清楚了;)。我不知道您的特殊情况,但注册表中应该有区别。

于 2010-02-25T18:09:27.760 回答
1

它几乎肯定会安装一个外壳图标扩展处理程序。编写自己的文件知道如何以没有很好记录或根本没有记录的文件格式检测版本是相当棘手的。

于 2010-02-25T18:09:08.793 回答