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