【问题标题】:Does Explorer's "virtual filesystem" have public API?Explorer 的“虚拟文件系统”是否有公共 API?
【发布时间】:2015-06-27 17:29:29
【问题描述】:

Windows 资源管理器提供了一个虚拟“文件系统”,其根目录是桌面文件夹,其中包含回收站和此/我的电脑,而这又包含已安装的文件系统、库、UPnP/MTP/PTP 设备和网络快捷方式。

鉴于可以在内置的打开/保存/目录选择器对话框中观察到相同的布局,我们可以假设有一个(内部?)API 公开了这个“VFS”。

是这样吗?如果是,这样的 API 是公开的吗?可以在我自己的应用程序中使用吗?

【问题讨论】:

标签: windows winapi filesystems explorer


【解决方案1】:

鉴于可以在内置的打开/保存/目录选择器对话框中观察到相同的布局,可以假设有一个(内部?)API 公开了这个“VFS”。

实际上,选择器会在其 UI 中嵌入一个真实的 Explorer 窗口,并让 Explorer 处理文件系统。

但是是的,正如@JonathanPotter 提到的那样,有一个公共 API - Shell Namespace。这与 Explorer 本身用于其所做的几乎所有事情的 API 相同。

文件夹和文件表示为ITEMIDLIST 标识符,可以使用IShellFolderIShellItem 接口(以及其他接口)进行访问。

SHGetDesktopFolder()开始获取桌面根文件夹的IShellFolder接口,然后可以根据需要向下钻取其层次结构,使用IShellFolder::EnumObjects()枚举子文件夹/文件,IShellFolde::BindToObject()获取@ 987654335@子文件夹接口,IShellFolder::GetDisplayNameOf()获取文件夹/文件名等

您可以使用 Shell 接口访问/执行很多操作,这甚至还没有触及所有可用的表面。

【讨论】:

    猜你喜欢
    • 2011-12-16
    • 2011-03-26
    • 2016-07-19
    • 2013-04-28
    • 2016-09-29
    • 2016-09-28
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多