0

我只是想出来的配方物业处理器是可用here Windows的应用程序样本,我修改了它要在.doc文件,而不是.recipe文件中使用:Windows shell是否支持多个shell属性处理程序?

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

但是,这似乎覆盖以前的办公室处理程序的属性与自身,这引发了问题,Windows外壳程序是否支持多个外壳程序属性处理程序,或者一次只能使用一个给定的文件类型?如果可能的话,我从样本中的代码或逻辑中遗漏了什么?

我无法在MSDN上找到有关此问题的具体答案。

回答

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)