如何在C#中使用默认浏览器打开页面

367
我正在设计一个小型的C#应用程序,其中包含一个Web浏览器。我当前在我的电脑上将所有默认设置都设置为Google Chrome是我的默认浏览器,但是当我在应用程序中单击链接以在新窗口中打开时,它会打开Internet Explorer。是否有办法使这些链接在默认浏览器中打开?或者我的电脑有什么问题吗?
我的问题是应用程序中有一个Web浏览器,所以假设你去Google并键入“堆栈溢出”,然后右键点击第一个链接并单击“在新窗口中打开”,它会在IE中而不是Chrome中打开。这是我编码不当还是我的计算机设置不正确?
===编辑===
这真的很烦人。我已经知道浏览器是IE了,但以前一切都运行正常。当我单击链接时,它会在Chrome中打开。当时我使用SharpDevelop制作应用程序,因为我无法启动C# Express。我进行了全新的Windows安装,并且由于我在应用程序中还没有走得太远,所以我决定重新开始,现在我遇到了这个问题。这就是为什么我不确定它是我的电脑出了问题还是其他原因。为什么IE会在单击链接时启动整个浏览器,而不是仅在默认浏览器中打开新链接?

呵呵,说服IE为您打开Chrome会是一场艰苦的战斗。嗯,不只是有点困难。如果直接运行IE,这也不起作用。同样,如果IE是默认浏览器,Chrome也不行。 - Hans Passant
  1. 获取开始菜单目录,搜索 Firefox 或 Chrome 的标准名称,请确保找到。如果未找到,则执行第 2 步。
  2. 获取标准安装位置列表,无论是 32 位还是 64 位,使用 Chrome 或 FF 存在的任何一个。如果没有,则执行第 3 步。
  3. 最后的手段是使用答案。
- bh_earth0
21个回答

0

您可以使用cmd命令start <link>在默认浏览器中打开链接,这种方法适用于每一种具有在cmd.exe上执行系统命令的功能的语言。

这是我在.NET 6中使用的方法,用于执行带有重定向输出和输入的系统命令,我也非常确定它将在.NET 5上进行一些修改后也能够工作。

using System.Diagnostics.Process cmd = new();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();


cmd.StandardInput.WriteLine("start https://google.com"); 
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接