1

我正在尝试在 Windows 中检索全局文件搜索结果,但 Windows 搜索文档非常复杂,我宁愿不处理 SQL 来实现如此简单的功能。运行后是否可以在 Windows 资源管理器中显示搜索结果,search:query=%s或者IShellFolderIShellItem可以在我的应用程序中处理结果项?

4

1 回答 1

1

如果您想弹出一个额外的窗口,您可以创建一个 Internet Explorer 窗口,导航到search-ms url,从 IWebBrowser2 的 IServiceProvider 实现中查询 IShellBrowser 服务,然后获取活动的 shell 视图并枚举视图中的项目

如果不需要额外的窗口,可以使用 ISearchFolderItemFactory 并使用运算符 COP_VALUE_CONTAINS 设置 PKEY_FileName 条件。您还可以使用 IConditionFactory2::CreateCompoundFromArray 创建复合条件,在 SQL 术语中它可能类似于

其中 fileName 包含“ABC”或 fileAuthor 包含“ABC”或 fileFullText 包含“ABC”或 fileTitle 包含“ABC”

然后,您可以调用 ISearchFolderItemFactory::GetShellItem 来获取搜索文件夹对象的 IShellItem 接口,您可以从该接口调用带有 BHID_EnumItems 的 BindToHandler 以返回一个外壳项目枚举器

于 2016-05-16T01:42:29.460 回答