Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何启动用户';有搜索条件的默认浏览器?_C#_Winforms_Default Browser - Fatal编程技术网

C# 如何启动用户';有搜索条件的默认浏览器?

C# 如何启动用户';有搜索条件的默认浏览器?,c#,winforms,default-browser,C#,Winforms,Default Browser,我找到了这个链接: 但是FireFox作为我的默认浏览器,它试图找到一个名为which的文件,该文件位于所选答案的引号中 代码 //ToolStripMenu单击事件启动默认浏览器并在internet上搜索特定单元格中的值 私有void tsmSearch_单击(对象发送方,事件参数e) { int key=mp.GetRowAt(gdcErrorLogDefaultView,rowX,rowY); 如果(键

我找到了这个链接:

但是FireFox作为我的默认浏览器,它试图找到一个名为which的文件,该文件位于所选答案的引号中

代码

//ToolStripMenu单击事件启动默认浏览器并在internet上搜索特定单元格中的值
私有void tsmSearch_单击(对象发送方,事件参数e)
{
int key=mp.GetRowAt(gdcErrorLogDefaultView,rowX,rowY);
如果(键<0)
返回;
字符串ex=gdcErrorLogDefaultView.GetRowCellValue(键,“异常”).ToString();
字符串名称=GetDefaultBrowser();
Process.Start(名称“\”?“+ex+”\”);
}
//从注册表获取默认浏览器
私有字符串GetDefaultBrowser()
{
字符串名;
RegistryKey regKey=null;
尝试
{
//设置要打开的注册表项
regKey=Registry.ClassesRoot.OpenSubKey(“HTTP\\shell\\open\\command”,false);
//去掉引号
name=regKey.GetValue(null).ToString().ToLower().Replace(“+(char)34)”;
//检查值是否以.exe结尾(这样我们可以删除任何命令行参数)
如果(!name.EndsWith(“exe”))
//删除所有命令行参数(必须删除.exe之后的所有参数)
name=name.Substring(0,name.LastIndexOf(“.exe”)+4);
}
捕获(例外情况除外)
{
name=string.Format(“错误:在以下模块中的方法:{1}中发生类型为:{0}的异常:{2}”,例如GetType(),ex.TargetSite,this.GetType());
}
最后
{
//检查钥匙是否仍然打开,如果是的话
//然后关上它
if(regKey!=null)
regKey.Close();
}
返回名称;
}
我昨天在StackOverflow的某个地方找到了GetDefaultBrowser()代码,但现在找不到链接。奇怪的是,我把Chrome设置为默认浏览器,但注册表项上仍然显示FireFox

是否有更简单的方法启动默认浏览器并使用其默认搜索提供程序查找术语?

尝试以下方法:

string searchQuery = "this is a search";
Process.Start("https://www.google.com/search?q=" + Uri.EscapeDataString(searchQuery));
编辑:现在使用正确的谷歌链接

试试这个:

string searchQuery = "this is a search";
Process.Start("https://www.google.com/search?q=" + Uri.EscapeDataString(searchQuery));

编辑:现在使用正确的谷歌链接

这假设谷歌是他们的默认搜索提供商。根据Gusdor在我的原始帖子上的评论,我尝试了这个方法(谁使用Bing!?),但它只带我到谷歌主页,在搜索栏中键入查询,而不带我到搜索结果页面。知道这是否可以修复吗?@sab669您需要在查询之前使用
搜索路径。这假设谷歌是他们的默认搜索提供商。根据Gusdor在我的原始帖子上的评论,我尝试了这个(谁使用Bing!?),但它只把我带到谷歌主页,在搜索栏中键入查询,而不带我到搜索结果页面。知道这是否可以修复吗?@sab669您需要在查询之前使用
搜索路径。windows 8之前的系统不知道“默认搜索引擎提供程序”。因此,无法使用默认提供程序加载默认浏览器。你的目标是什么操作系统?@Gusdor应用程序将主要在Windows7上运行,但有些用户有Vista甚至XP。我怀疑在很长一段时间内我们会看到任何运行8的东西,如果有的话。那么恐怕你的要求是不可能的。您可以检测默认浏览器,但使该应用程序使用条件进行搜索的方法在不同浏览器之间会有所不同。我应该补充一点,firefox将此命令行用于http请求<代码>“C:\ProgramFiles(x86)\Mozilla Firefox\Firefox.exe”-OSIT-url“%1”
。您可以看到从命令行获取参数1的
-url“%1”
开关。Google Chrome的命令行允许您直接附加URL,无需切换
-URL
,但(!!!)。。。Firefox可能也会这样做。Internet Explorer?谁知道呢。这都是未定义的。嗯,如果我特别无聊,也许我会为这三种浏览器编写一个切换案例,然后尝试执行适当的过程?windows 8之前的系统不知道“默认搜索引擎提供商”。因此,无法使用默认提供程序加载默认浏览器。你的目标是什么操作系统?@Gusdor应用程序将主要在Windows7上运行,但有些用户有Vista甚至XP。我怀疑在很长一段时间内我们会看到任何运行8的东西,如果有的话。那么恐怕你的要求是不可能的。您可以检测默认浏览器,但使该应用程序使用条件进行搜索的方法在不同浏览器之间会有所不同。我应该补充一点,firefox将此命令行用于http请求<代码>“C:\ProgramFiles(x86)\Mozilla Firefox\Firefox.exe”-OSIT-url“%1”
。您可以看到从命令行获取参数1的
-url“%1”
开关。Google Chrome的命令行允许您直接附加URL,无需切换
-URL
,但(!!!)。。。Firefox可能也会这样做。Internet Explorer?谁知道呢。这都是未定义的。嗯,如果我特别无聊,也许我会为这三种浏览器编写一个切换案例,然后尝试进行适当的处理?