【问题标题】:Does the Windows shell support multiple shell property handlers?Windows shell 是否支持多个 shell 属性处理程序?
【发布时间】:2017-01-24 20:37:21
【问题描述】:
我只是在试用 here 可用的配方属性处理程序的 Windows 应用程序示例,我将其修改为用于 .doc 文件而不是 .recipe 文件:
const WCHAR c_szRecipeFileExtension[] = L".doc";
但是,这似乎用它自己覆盖了以前的 Office 处理程序的属性,这就引出了一个问题,Windows shell 是否支持多个 shell 属性处理程序,或者对于给定的文件类型,您一次只能使用一个?如果可能的话,我在示例中的代码或逻辑中遗漏了什么?
我在 MSDN 上找不到这个问题的具体答案。
【问题讨论】:
标签:
visual-c++
explorer
windows-shell
file-properties
propertyhandler
【解决方案1】:
没有。
但是您可以使用一个变体(我不喜欢它,但我没有看到任何其他变体)。注册自己的时保存以前的属性处理程序 CLSID。当 shell 请求您无法处理的属性时 - 只需创建先前处理程序的实例并将请求传递给它们。
CoCreateInstance(SavedCLSID, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IPropertyStore, PS)
PS.QueryInterface(IInitializeWithStream, IWS)
IWS.Initialize(Stream, Mode)
PS.GetValue(AUnknownKey)