2015-06-27 74 views
0

Windows資源管理器提供一個虛擬的「文件系統」,其根目錄是Desktop文件夾,其中包含回收站和本機/我的電腦,後者又包含已安裝的文件系統,庫,UPnP/MTP/PTP設備和網絡快捷方式。Explorer的「虛擬文件系統」是否具有公共API?

Explorer

所用的相同的佈局可以在內置的打開/保存/目錄選擇器對話框中可以觀察到,可以假設有一個(內?)API揭露這個「VFS」。

這是這種情況?如果是的話,這樣的API是否公開並且可以從我自己的應用程序中使用?

+2

它被稱爲[Shell命名空間](https://msdn.microsoft.com/en-us/library/windows/desktop/cc144090(v = vs.85).aspx)。 –

回答

1

鑑於在內置open/save /目錄選取器對話框中可以觀察到相同的佈局,可以假設有一個(內部?)API公開此「VFS」。

實際上,採集器顯示一個嵌入其UI中的真正的資源管理器窗口,並讓資源管理器處理文件系統。

但是,有一個公共API,如@JonathanPotter提到的 - Shell Namespace。這與資源管理器本身使用的API幾乎相同。

文件夾和文件表示爲ITEMIDLIST標識符,可以使用IShellFolderIShellItem接口(以及其他)訪問。

開始SHGetDesktopFolder()得到IShellFolder接口根桌面文件夾,然後你可以通過它的層次結構,需要向下鑽取,使用IShellFolder::EnumObjects()枚舉子文件夾/文件,IShellFolde::BindToObject()獲得IShellFolder接口,子文件夾,IShellFolder::GetDisplayNameOf()得到文件夾/文件名等。

有很多你可以訪問/使用Shell界面,這甚至沒有抓住所有可用的表面。