我認爲有一種方法可以擴展Windows Shell以使其他類型的存檔與ZIP文件「壓縮文件夾」相同。在Windows資源管理器中實現如何創建「文件夾」(如「ZIP壓縮文件夾」)的接口是什麼?
我承認,當你熟悉shell的術語時,Shell界面非常清晰,但是真的很笨拙。我目前的猜測是IShellFolder
,但我認爲這將創建一個額外的文件夾在與文件相同的位置,而不是爲文件本身提供特殊支持。
因此,要實現什麼?
我認爲有一種方法可以擴展Windows Shell以使其他類型的存檔與ZIP文件「壓縮文件夾」相同。在Windows資源管理器中實現如何創建「文件夾」(如「ZIP壓縮文件夾」)的接口是什麼?
我承認,當你熟悉shell的術語時,Shell界面非常清晰,但是真的很笨拙。我目前的猜測是IShellFolder
,但我認爲這將創建一個額外的文件夾在與文件相同的位置,而不是爲文件本身提供特殊支持。
因此,要實現什麼?
沒有專門用於實現壓縮文件夾的shell界面。它是作爲一個普通的Shell空間擴展,只是碰巧創建/打開一個普通的.zip文件,並使用PIDL或者標準的shell接口,如IShellFolder
代表其內容的殼牌,IShellItem
,IDataObject
,IEnumIDList
等SNE甚至代表.zip文件本身作爲其父文件夾中的子文件夾,而不是文件,因此Shell可以像使用任何其他文件夾一樣使用SNE的IShellFolder
實現遍歷到.zip文件中。 Shell沒有任何概念,它正在訪問一個.zip文件,它只是另一個Shell項目,其特徵告訴Shell如何使用它。 SNE的實現處理訪問/更新.zip文件而不是文件系統的細節。
有MSDN的一整節,描述了創建Shell空間擴展,其中包括:
Creating Shell Data Source Objects and Extending the Shell Namespace
那裏的「擴展」這個單詞沒有語義超載嗎?我可能是錯的,但「擴展處理程序」似乎是關於文件路徑擴展,而「名稱空間擴展」似乎是關於擴展名稱空間。 –
我認爲這是一個殼命名空間擴展。 IShellFolder只是表示所有shell容器(文件夾)的接口。 –
這正是它是什麼。一個普通的SNE,它打開一個.zip文件,並使用標準外殼接口(如IShellFolder和IShellItem)以及PIDL將其內容表示爲文件夾和文件。 –