我只是在尝试Windows应用程序样本的配方属性处理程序,这是可用的在这里,我修改了它,以用于.doc
文件,而不是.recipe
文件:
const WCHAR c_szRecipeFileExtension[] = L".doc";
但是,这似乎用自己覆盖了以前的Office处理程序的属性,这就引出了一个问题,Windows shell是否支持多个shell属性处理程序,或者您一次只能使用一个给定的文件类型?如果可能的话,我在示例中的代码或逻辑中遗漏了什么?
我在MSDN上找不到这个问题的具体答案。
No。
但是有一个变体你可以使用(我不喜欢它,但我没有看到任何额外的变体)。在注册自己的属性处理程序时保存以前的属性处理程序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)