【问题标题】:C# Launch default browser with a default search queryC# 使用默认搜索查询启动默认浏览器
【发布时间】:2013-05-16 16:07:19
【问题描述】:

我需要做的是使用默认搜索启动默认浏览器。默认搜索是在 URL 导航文本框中键入搜索词时发生的。例如,在 Chrome 和 Firefox 中,默认情况下,在导航文本框中输入“小狗”将引导您进入“小狗”的 Google 搜索结果。在 IE 中,它会做同样的事情,只是在 Bing 上。

通常,您只需执行以下操作即可调用默认浏览器:

Process.Start("http://google.com");

但我不能假设默认搜索提供商是 Google。

有没有办法通过 C# 调用此行为?我唯一能做的就是尝试确定哪个浏览器是默认浏览器,然后直接使用搜索词执行它。

有人知道其他(最好是更简单的)方法吗?

更新: 刚刚找到代码找到默认浏览器here

【问题讨论】:

  • 您是否尝试使用具有查询的链接启动进程?例如Process.Start("https://www.google.co.uk/#sclient=psy-ab&q=my+search+query")
  • @aleksey.berezan 这假定 google 是默认提供程序。这里的问题是,既可以启动默认浏览器到站点,也可以使用特定浏览器启动搜索,他需要一种方法来启动默认浏览器并使用默认搜索提供程序。

标签: c#


【解决方案1】:

如果你已经知道如何找到默认浏览器,我会尝试使用Process.Start("browser\path.exe", "\"? searchterm\"");

这似乎适用于 IE 和 Chrome。

【讨论】:

  • 这与查找默认浏览器的代码完美结合。谢谢!
  • @DominicP 不介意挖掘你的一个非常古老的帖子,但是这似乎不适用于 FireFox 或 Chrome v26.0.1410.64 m...知道什么参数是针对那些浏览器的?
  • @sab669 我拥有的 Chrome 版本是 30.0.1599.101 m,它在那里对我有用。找到 chrome.exe 在您的文件系统中的位置(可能是您的用户配置文件下的 ...\AppData\Local\Google\Chrome\Application\chrome.exe),在命令提示符下导航到那里,然后尝试输入 chrome.exe "? abalone"。它不会打开带有搜索结果的 chrome 吗?
  • @DominicP 哦,我忘了空格。它可以在 IE 中没有空格,但不能在 chrome 中使用。
【解决方案2】:

我刚刚测试了 IE,在开始 -> 运行提示中输入:

"c:\Program Files\Internet Explorer\iexplore.exe" "堆栈溢出"

它启动了 Internet Explorer 并使用我的默认搜索提供程序搜索堆栈溢出。由于您的搜索词不是以http:// 开头的标准网址,因此如果您不提供要启动的特定可执行文件,Process.Start 将无法知道启动浏览器。

您可以通过检查HKEY_CLASSES_ROOT\http\shell\open\command 来识别默认浏览器,然后您可以使用搜索词作为查询参数来启动此浏览器,然后它应该使用该浏览器的默认搜索提供程序。

【讨论】:

  • 是的,我刚刚在 StackOverflow 的其他地方找到了用于检索默认浏览器的代码,我将更新我的帖子。不过,这种技术似乎不适用于 Chrome。
  • 必须与搜索词本身有关。 "c:\Program Files\Internet Explorer\iexplore.exe" "stack overflow" 确实会返回搜索结果。 "c:\Program Files\Internet Explorer\iexplore.exe" "puppies" 在尝试检索 puppies 后返回“Internet Explorer 无法显示网页”错误。
  • @jpreed00 这是因为“堆栈”和“溢出”之间的空间。由于它在 URL 中无效,IE 知道您想使用默认搜索提供程序来搜索它。
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 2011-05-24
  • 2013-04-19
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多