Windows 使用Mono+打开默认浏览器;gtk#
我需要在linux和windows上从我的应用程序中打开一个url,并且我希望避免替换开放浏览器上的现有页面 我怎么叫它开门 我知道我可以用Windows 使用Mono+打开默认浏览器;gtk#,windows,linux,mono,webbrowser-control,gtk#,Windows,Linux,Mono,Webbrowser Control,Gtk#,我需要在linux和windows上从我的应用程序中打开一个url,并且我希望避免替换开放浏览器上的现有页面 我怎么叫它开门 我知道我可以用 System.Diagnostics.Process.Start("http://mysite.com"); 它也可以在linux下工作,但这将替换已经打开的浏览器窗口上显示的任何页面 我发现这篇文章(thx至): System.Diagnostics.Process.Start(“”) 但这只适用于windows,我需要一个在两个系统上都能工作的解决方
System.Diagnostics.Process.Start("http://mysite.com");
它也可以在linux下工作,但这将替换已经打开的浏览器窗口上显示的任何页面
我发现这篇文章(thx至):
System.Diagnostics.Process.Start(“”)
但这只适用于windows,我需要一个在两个系统上都能工作的解决方案。我建议检查应用程序正在运行的操作系统,然后分别为每个操作系统实现。在搜索Banshee源代码后,我发现它们使用
Gnome.Url.Show()
(在Gnome sharp中)打开用户的默认浏览器
如果出于任何原因,这是不可能的,那么我会想到一些其他的想法
如果用户正在运行Gnome,那么应该有一个名为“Gnome open”的程序来完成这个任务
System.Diagnostics.Process.Start("gnome-open http://mysite.com");
如果这不起作用,我知道(至少)所有基于Debian的系统都有一个名为Sensive browser的脚本
System.Diagnostics.Process.Start("sensible-browser http://mysite.com");
我想这就是你想要的:
System.Diagnostics.Process.Start ("xdg-open http://mysite.com");
这只适用于linux,但应适用于所有linux桌面。正如grombeestje所说,您可能应该在Windows和linux上分别实现它。我还发现了xdg open,它看起来像一个跨桌面gnome-open。请注意,Process.Start单独使用可执行文件名/路径的参数:Process.Start(“xdg open”,”)另外,请注意,显式使用xdg open是非常冗余的,因为Process.Start(“”)在Linux上使用“xdg open”(带有一些回退),在MacOS上使用“open”,在Windows上使用shellexec。