如何编程打开Windows Explorer并展示指定搜索结果
编程打开Windows Explorer并直接展示搜索结果的实现方案
可以通过Windows资源管理器原生支持的search:协议参数实现该需求,最终效果和手动打开资源管理器在搜索栏输入关键词搜索完全一致。
你之前使用的选中指定文件的实现,是给explorer.exe传入/select启动参数;要直接加载搜索结果,只需要替换为search:协议格式的查询参数即可,参数基础格式为:explorer.exe search:query=<搜索关键词>&crumb=location=<搜索起始目录>
代码示例
- 指定目录下搜索所有txt文件
// 打开C:\Folder目录下所有txt文件的搜索结果页 System.Diagnostics.Process.Start("explorer.exe", "search:query=*.txt&crumb=location:c:\\Folder");
- 全盘搜索指定类型文件
// 打开全电脑范围内所有txt文件的搜索结果页 System.Diagnostics.Process.Start("explorer.exe", "search:query=*.txt&crumb=location:shell:MyComputerFolder");
注意事项
- 如果搜索路径、搜索关键词包含空格、
&、%等特殊字符,需要先对对应内容做URL编码再拼接参数,避免参数解析出错。 - 该方案兼容Windows 7及以上所有主流Windows版本,打开的资源管理器窗口支持全部原生搜索交互,包括按修改时间/文件大小筛选、排序、文件预览等功能,和手动触发的搜索无体验差异。
- 如果需要实现更复杂的搜索规则,可以直接在
query参数中拼接资源管理器原生支持的高级搜索语法,效果和手动在搜索栏输入高级搜索条件完全一致。
内容的提问来源于stack exchange,提问作者Nick_F
相关产品推荐
相关产品推荐

