我正在尝试使用c#根据windows搜索协议触发windows通用桌面搜索。这是一个非常简单的代码来实现它。
static void Main(string[] args)
{
const string searchQuery = "search:";
Process.Start(searchQuery);
}
上面的对Win7和Win8都有效,会显示一个搜索窗口。但是当我添加query的时候,正如文档所说:
const string searchQuery = "search:query=a";
Process.Start(searchQuery);
就是没有反应,也没有例外。之后,我尝试在查询中添加位置信息:
const string searchQuery = "search:query=a&crumb=location:\";
Process.Start(searchQuery);
奇怪的是,这在Win7中工作得很好,一个搜索窗口提示,并开始像预期的那样搜索"a"。但是在Win8中失败了,并且抛出了一个异常:
未处理异常:System.ComponentModel。Win32Exception:系统异常找不到指定的驱动器
在System.Diagnostics.Process.StartWithShellExecuteEx (ProcessStartInfostartI nfo)
在System.Diagnostics.Process.Start ()
在System.Diagnostics.Process。开始(ProcessStartInfo startInfo)
在System.Diagnostics.Process。开始(字符串文件名)
在ProcessStart.Program。Main(String[] args) ine:WorkSpaceProcessStartProc essStartProgram.cs:line 15
我做错了什么,Win7和Win8在搜索协议上有什么不同?谢谢你!
您需要传递位置像
const string searchQuery = "search:search:query=seattle&crumb=location:C://MyFolder";
Process.Start(searchQuery);