如何在C#中默认浏览器中打开
我正在devise一个小型的C#应用程序,里面有一个网页浏览器。 我目前在我的计算机上有我所有的默认设置,说谷歌浏览器是我的默认浏览器,但是当我点击我的应用程序中打开一个新窗口中的链接,它会打开Internet Explorer。 有没有办法使这些链接在默认浏览器中打开呢? 或者我的电脑有问题吗?
我的问题是,我有一个webbrowser在应用程序,所以说你去谷歌和键入“堆栈溢出”,并右键单击第一个链接,然后单击“在新窗口中打开”它在IE中而不是Chrome打开。 这是我编码不正确,或者有一个设置不正确,在我的电脑上
===编辑===
这真的很烦人 我已经知道,浏览器是IE浏览器,但我以前工作得很好。 当我点击一个链接它在铬打开。 我当时正在使用sharp开发来制作应用程序,因为我无法启动c#express。 我做了一个新的Windows安装,因为我在我的应用程序不太远,我决定重新开始,现在我有这个问题。 这就是为什么我不确定它是否是我的电脑。 为什么IE会在单击链接时启动整个浏览器,而不是在默认浏览器中打开新链接?
你可以写
System.Diagnostics.Process.Start("http://google.com");
编辑 : WebBrowser
控件是IE的embedded式副本。
因此,它里面的任何链接都将在IE中打开。
要改变这种行为,你可以处理Navigating
事件。
public void gotoSite(string url) { System.Diagnostics.Process.Start(url); }
那应该解决你的问题
你有没有尝试Process
在这里提到: http : //msdn.microsoft.com/de-de/library/system.diagnostics.process.aspx ?
你可以使用
Process myProcess = new Process(); try { // true is the default, but it is important not to set it to false myProcess.StartInfo.UseShellExecute = true; myProcess.StartInfo.FileName = "http://some.domain.tld/bla"; myProcess.Start(); } catch (Exception e) { Console.WriteLine(e.Message); }
看看GeckoFX控件 。
GeckoFX是一个开源组件,可以很容易地将Mozilla Gecko(Firefox)embedded到任何.NET Windows Forms应用程序中。 写在干净,完全评论的C#中,GeckoFX是默认的基于Internet Explorer的WebBrowser控件的完美替代品。
对于那些在dotnet核心中发现这个问题的人。 我在这里find了解决办法
码:
private void OpenUrl(string url) { try { Process.Start(url); } catch { // hack because of this: https://github.com/dotnet/corefx/issues/10361 if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { url = url.Replace("&", "^&"); Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true }); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { Process.Start("xdg-open", url); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { Process.Start("open", url); } else { throw; } } }
这为我打开了默认值:
System.Diagnostics.Process.Start(e.LinkText.ToString());
尝试这个,老派的方式;)
public static void openit(string x) { System.Diagnostics.Process.Start("cmd", "/C start" + " " + x); }
使用:openit(“www.google.com”);
在UWP中:
await Launcher.LaunchUriAsync(new Uri("http://google.com"));