C++ 使用search ms:或search:协议以IShellItem形式检索搜索结果

C++ 使用search ms:或search:协议以IShellItem形式检索搜索结果,c++,windows,shell,com,windows-search,C++,Windows,Shell,Com,Windows Search,我正在尝试在Windows中检索全局文件搜索结果,但是Windows搜索文档非常复杂,我不希望为了这么简单的功能而使用SQL。在运行search:query=%s作为IShellFolder或IShellItem后,是否可以在Windows资源管理器中显示搜索结果,以便我可以在我的应用程序中处理结果项?如果希望弹出一个额外的窗口,可以创建一个Internet Explorer窗口,导航到,从IWebBrowser2的IServiceProvider实现中查询IShellBrowser服务,然后

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

如果希望弹出一个额外的窗口,可以创建一个Internet Explorer窗口,导航到,从IWebBrowser2的IServiceProvider实现中查询IShellBrowser服务,然后

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

其中文件名包含“ABC”或文件作者包含“ABC”或文件全文包含“ABC”或文件标题包含“ABC”


然后,您可以调用ISearchFolderItemFactory::GetShellItem来获取搜索文件夹对象的IShellItem接口,您可以从中访问该接口

您可以使用ISearchQueryHelper接口为您构建SQL(使用资源管理器的语法):,但您仍然必须使用ADO或OLEDB来运行查询。这将返回可以使用标准shell函数转换为IShellItem的项目路径