c++ - 使用搜索-ms : or search: protocols to retrieve search results as an IShellItem

标签 c++ windows shell com windows-search

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

最佳答案

如果你想弹出一个额外的窗口,你可以创建一个 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 来创建复合条件,在 SQL 术语中它可能类似于

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

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

关于c++ - 使用搜索-ms : or search: protocols to retrieve search results as an IShellItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36049579/

相关文章:

c++ - 虚函数默认参数行为

c++ - Matlab 不会运行我的 C++ .exe 文件

vba - 用于计算评论数量的 Microsoft Word 宏

windows - 如何通过cmd最大化特定窗口? ( Windows )

c - 这个包含 C 源代码的 shell 脚本如何工作?

linux - 将 bash 代码片段添加到由 bash 脚本提供的 bash conf 文件中是个好主意吗?

c++ - 如何从 g++ COLLECT_LTO_WRAPPER 获取信息到 make 生成的 .so 文件中?

c++ - 继承和列表

windows - 我的 Windows 批处理显示 : "72 was unexpected at this time."

linux - 替换 Linux 中文件的内容