获取默认浏览器,检查是否已打开并发送网址

时间:2017-11-23 02:50:01

标签: c# winforms shell

WinForms App / RSS新闻Feed控件

我想要实现的目标是:

如果用户想要从winApp的RSS新闻源打开URL,那么

  • 检查默认浏览器是否已打开
  • 如果不是,那么发送到Shell的URL - 很明显该怎么做。
  • 如果是,则将此URL发送到浏览器的新选项卡并激活浏览器和该选项卡。

所以,一般来说,1-st和3-rd是我感兴趣的要点。

3 个答案:

答案 0 :(得分:1)

你需要做前两部分吗?你为什么关心什么是默认浏览器?你会改变你的做法吗?

您将URL发送给shell的是什么?

如果使用.NET,并且在使用Process类时 - 向其传递链接时,它将使用默认浏览器。因此,相同的应用程序可能分别启动Chrome或IE。

还有另一个堆栈显示了如何执行此操作:http://www.highrez.co.uk/downloads/XMouseButtonControl.htm

ProcessStartInfo sInfo = new ProcessStartInfo("http://example.com/");  
Process.Start(sInfo);

答案 1 :(得分:1)

System.Diagnostics.Process.Start(startUrl); 
这就是全部。它会检查默认浏览器是否已打开,如果没有则运行它,并在新选项卡中打开该URL并激活它。

答案 2 :(得分:0)

这显然会因浏览器的不同而有所不同,但很明显,你几乎没有对此进行任何研究,所以我将成为你的研究帮助。

注意

通常,您只需在路径上执行URL,默认浏览器将打开一个新选项卡或以nessesary开头。不应该有任何需要做以下事情。在您的CMD窗口中执行explorer.exe "http://google.com",看看它如何与各种默认浏览器一起使用。

答案

我用Google搜索了"How to detect the default browser C#",得到了几个结果,第一个是How to find default web browser using C#? - 这有几个答案,第二个似乎就是你想要的答案。

知道默认浏览器后,您需要检查它是否已打开。因此,您需要为每个浏览器编译二进制名称列表(chrome为chrome.exe),然后我们搜索"check if process is running C#",这会给我们How can I know if a process is running?

现在,我们知道浏览器是否正在运行。如果是,我们将有一个Process实例 - 所以我们现在需要知道二进制位置(这很重要!)。因此,我们搜索Get the path of a running process C#,这会给我们C#: How to get the full path of running process?

每个浏览器都有自己的机制来打开新选项卡并获得焦点,但通常需要使用一些参数执行二进制文件。对于谷歌浏览器,答案如下:https://superuser.com/questions/731467/command-line-option-to-open-chrome-in-new-window-and-move-focus

现在我们已经完成了谷歌浏览器浏览器的所有内容。重复其他浏览器,并进行类似的研究,以了解如何执行二进制文件以打开新选项卡。

如果您想要一个适用于所有浏览器的通用解决方案,那么这已经存在。只需执行explorer "yourUrl"