IExplorerBrowser 接口 (shobjidl_core.h)
IExplorerBrowser 是一个浏览器对象,可以导航或托管数据对象的视图。 作为功能齐全的浏览器对象,它还支持自动旅行日志。
Shell 提供 IExplorerBrowser 的默认实现作为CLSID_ExplorerBrowser。 通常,开发人员不需要提供此接口的自定义实现。
Windows 软件开发工具包 (SDK) 提供了完整的示例,演示 IExplorerBrowser 的使用和交互。 下载 资源管理器浏览器搜索示例 和 资源管理器浏览器自定义内容示例。
继承
IExplorerBrowser 接口继承自 IUnknown 接口。 IExplorerBrowser 也有以下类型的成员:
方法
IExplorerBrowser 接口具有这些方法。
IExplorerBrowser::Advise 为事件回调启动与 IExplorerBrowser 的连接。 |
IExplorerBrowser::BrowseToIDList 浏览到指向项标识符列表的指针, (PIDL) |
IExplorerBrowser::BrowseToObject 浏览到 对象。 |
IExplorerBrowser::D estroy 销毁浏览器。 |
IExplorerBrowser::FillFromObject 创建一个结果文件夹,并用项目填充该文件夹。 |
IExplorerBrowser::GetCurrentView 获取浏览器当前视图的接口。 |
IExplorerBrowser::GetOptions 获取当前浏览器选项。 |
IExplorerBrowser::Initialize 准备要导航的浏览器。 |
IExplorerBrowser::RemoveAll 从结果文件夹中删除所有项目。 |
IExplorerBrowser::SetEmptyText 设置默认的空文本。 |
IExplorerBrowser::SetFolderSettings 设置当前视图的文件夹设置。 |
IExplorerBrowser::SetOptions 设置当前浏览器选项。 |
IExplorerBrowser::SetPropertyBag 设置属性包的名称。 |
IExplorerBrowser::SetRect 设置浏览器创建的视图窗口的大小和位置。 |
IExplorerBrowser::Unadvise 终止建议连接。 (IExplorerBrowser.Unadvise) |
注解
有关显示 IExplorerBrowser 及其方法的典型用法的示例代码,请参阅 资源管理器浏览器自定义内容 和资源管理器浏览器自定义内容示例。
调用此对象的 Initialize 方法后,必须调用其 Destroy 方法,以释放在对 Initialize 的调用中生成的任何窗口资源。
承载 ExplorerBrowser 对象的 对象应派生自 IServiceProvider 并实现 QueryService 以响应任何服务查询。 例如,可以通过实现 IExplorerPaneVisibility 并响应任何SID_ExplorerPaneVisibility服务请求来控制浏览器显示的窗格数。
默认情况下,帧处于禁用状态。 若要启用帧并获取默认窗格集,请使用 IExplorerBrowser::SetOptions 方法设置EBO_SHOWFRAMES标志。 默认窗格(列为 IExplorerPaneVisibility 常量)包括:
- EP_NavPane
- EP_Commands
- EP_Commands_Organize
- EP_Commands_View
- EP_DetailsPane
- EP_PreviewPane
- EP_QueryPane
- EP_AdvQueryPane
- EP_StatusBar
- EP_Ribbon
ExplorerBrowser 对象的客户端可以实现 ICommDlgBrowser、 ICommDlgBrowser2 或 ICommDlgBrowser3 接口,并在其 QueryService 实现中响应SID_SExplorerBrowserFrame服务请求,当浏览器上调用任何 ICommDlgBrowser 接口时, (通常由于用户操作) 从视图中调用。 请注意,如果已通过调用 IFolderFilterSite::SetFilter 在浏览器中设置了文件夹筛选器,则客户端不会收到对 ICommDlgBrowser::IncludeObject 的调用。
为了保持与某些旧应用程序兼容,默认 Shell 视图 (DefView) 执行筛选操作 (例如,搜索文件夹在 UI 线程上执行的搜索操作) 。 对于新应用程序,这通常不需要;搜索应在后台线程上执行。 若要停止 UI 线程筛选并在后台线程上运行筛选,请通过SID_SExplorerBrowserFrame服务请求提供 ICommDlgBrowser2 。 调用 ICommDlgBrowser2::GetViewFlags 时,它应返回CDB2GVF_NOINCLUDEITEM。 例如,如果导航到 ExplorerBrowser 中的搜索文件夹,但不返回CDB2GVF_NOINCLUDEITEM,则视图可以停止响应,直到整个搜索完成。
Shell 体系结构有三个main组件:浏览器、视图和数据源 (例如 IShellFolder) 。 ExplorerBrowser 对象在整个 Shell 命名空间中维护当前位置和指向其他位置的导航。 它还将旅行日志 (向前和后退历史记录) 。 当视图中发生事件时,浏览器会收到通知;例如,当用户双击文件夹时。 作为响应,浏览器导航到该位置。 数据源是提供命名空间中的项和文件夹的对象。 它们还包含有关位置的信息,例如项的属性,以及视图请求时要添加到上下文菜单的内容。 此外,数据源知道应创建哪个视图来表示其位于某个位置的项。 在几乎所有情况下,文件夹都会创建 Shell 的默认视图 (DefView) 。 因此,当浏览器导航时,它会收到新位置的 IShellFolder 对象,并询问它要创建哪个视图。 然后,浏览器创建该视图并使其可见,同时隐藏并销毁显示上一位置的视图。 视图负责与 IShellFolder 通信以获取当前位置,并请求它枚举项,这样视图就可以向用户显示这些项目。 当用户与项交互时,视图会与 IShellFolder 通信以获取所需的任何其他信息,例如项的特定属性或项的上下文菜单条目。
如果应用程序使用 CLSID_ExplorerBrowser 提供的默认实现,将其插入应用程序窗口,然后浏览到某个位置,ExplorerBrowser 将创建由它浏览到的位置所指定的正确 IShellView 。 然后,应用程序可以请求 ExplorerBrowser 为它提供当前视图上的接口,从而允许应用程序根据需要直接操作视图。 由 SHCreateShellFolderViewEx 创建的 Windows 资源管理器视图对象的默认实现支持接口 IShellView。 可以通过调用 IExplorerBrowser::GetCurrentView ,然后在使用接口 ID IID_CDefView返回的对象上调用 QueryInterface 来验证是否具有默认的 Shell 文件夹视图对象。
Windows 7 及更高版本。 CExplorerBrowser 可以通过将 IServiceProvider::QueryService 与服务 ID SID_SlnPlaceBrowser配合使用来支持就地导航。 使用 SID_SInPlaceBrowser 时,CExplorerBrowser 状态不能设置为 EBO_NAVIGATEONCE。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | shobjidl_core.h (包括 Shobjidl.h) |