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)