对于MS Office文件,如docx文件,图像文件等,您可以在Windows资源管理器中的属性中设置可搜索的标签,请参阅图像。
如果我有自己的自定义文件格式,如何将其添加到文件的详细信息页面? 我一直在研究shell扩展,但这似乎不太可能。我的自定义文件格式是一个复合文件,所以基本上是一个zip存档。
如果它是一个shell扩展,我应该使用它来为我自己的自定义文件启用它,那么请问它是哪一个?我一直在寻找" The Complete Idiot编写Shell扩展指南"但我在那里找不到任何东西,只是如何添加新的属性页。
我正在使用MFC。
谢谢!
答案 0 :(得分:1)
对于Vista及更高版本:
1)创建shell扩展实现IPropertyStore,IPropertyStoreCapabilities和IInitializeWithStream。如果您无法使用流工具IInitializeWithFile而不是IInitializeWithStream。 A lot of details
2)IPropertyStore.GetCount必须返回您需要的属性数。如果你描述它必须返回1。
3)IPropertyStore.GetAt必须返回属性的PKEY。如果你描述它必须返回PKEY_Keywords。
4)在IPropertyStore.GetValue中,您必须从zip文件中读取您的标签并将其返回到功能结果中。
5)在IPropertyStore.SetValue中,您必须将新值存储在内部存储器中。
6)在IPropertyStore.Commin内部,您必须将内部存储器存储的新值存储到您的真实zip文件中。
7)如果您希望用户编辑您的媒体资源,IPropertyStoreCapabilities.IsPropertyWritable必须返回S_OK。
8)创建注册值:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.myzip]
"FullDetails"="prop:System.PropGroup.Description;System.Keywords;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemTypeText;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;*System.OfflineAvailability;*System.OfflineStatus;*System.SharedWith;*System.FileOwner;*System.ComputerName"
您可以尝试将HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ SystemFileAssociations.myzip替换为HKEY_CLASSES_ROOT.myzip。不要忘记将.myzip更改为您的分机。
9)享受结果:
对于XP:
1)创建shell扩展实现IColumnProvider。 Part VIII of The Complete Idiot's Guide to Writing Shell Extensions
2)如果您希望用户编辑您的标签,您必须创建Property Sheet shell extension。