Windows如何将图标与资源管理器shell中的文件相关联?

Kug*_*gel 2 windows icons windows-explorer windows-shell detection

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

Windows如何知道如何做到这一点?

如何在程序中提取或使用此版本检测系统?

编辑:

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

the*_*ill 5

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

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