Windows shell 是否支持多个 shell 属性 处理程序?

Does the Windows shell support multiple shell property handlers?

我只是尝试了食谱 属性 处理程序的 Windows 应用示例,它可用 here,我修改了它以用于 .doc 文件.recipe 个文件:

const WCHAR c_szRecipeFileExtension[] = L".doc";

但是,这似乎用自己覆盖了以前的 Office 处理程序的属性,这引出了一个问题,Windows shell 是否支持多个 shell 属性 处理程序,或者对于给定的文件类型一次只能使用一个?如果可能的话,我在示例中的代码或逻辑中遗漏了什么?

我在 MSDN 上找不到这个问题的具体答案。

没有。

但是您可以使用一个变体(我不喜欢它,但我没有看到任何其他变体)。注册自己的时保存以前的 属性 处理程序 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)