使用search-ms:或search:protocols将搜索结果检索为IShellItem

时间:2016-03-17 00:34:56

标签: c++ windows shell com windows-search

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

1 个答案:

答案 0 :(得分:1)

如果要弹出额外的窗口,可以创建Internet Explorer窗口,导航到search-ms url,从IWebBrowser2的IServiceProvider实现查询IShellBrowser服务,然后get the active shell view and enumerate items in the view

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

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

然后,您可以调用ISearchFolderItemFactory :: GetShellItem来获取搜索文件夹对象的IShellItem接口,您可以从中call BindToHandler with BHID_EnumItems to return a shell item enumerator