繁体   English   中英

的Process.Start(“IEXPLORE.EXE”); < - 这可靠吗?

[英]Process.Start(“IExplore.exe”); <— Is this reliable?

的Process.Start( “IEXPLORE.EXE”);

这在每台机器上都能正常工作吗? 如果没有,怎么做得好?

...编辑:.................................

Process.Start(“ http://www.example.com/ ”)的问题; 是我们必须定位一个本地html文件,其中一些查询字符串指定要在html框架集中加载哪个页面。 所以我们的URL如下所示:

G:\PathToHelpFolder\index.html#search?page=1.html

如果将此路径传递给Process.Start,则会生成错误:“找不到该文件”。 这是由最后的查询字符串引起的。 (#搜寻?页= 1.HTML)

因此,我们必须使用filepath作为命令行参数来启动资源管理器(或默认浏览器会更好)。 我们在MSDN文档中找到了上述方法。 (Process.Start(“IExplore.exe”);)我们唯一的问题是这个方法是否足够可靠,可以部署到商业应用程序。 单声道不是问题,只有Windows系统是目标。

...编辑:我们的解决方案......

我们的解决方案是从注册表中获取默认浏览器,并以文件名作为参数启动它。 (如:在文件中用html启动默认浏览器,然后跳转到特定锚点

如果您的目标是打开浏览器转到特定页面,最好只使用页面URL:

Process.Start("http://www.example.com/");

这样,将使用用户的默认浏览器。 (对于其中一个,我会因为被迫使用IE而烦恼。)

我曾经为我构建的一个愚蠢的应用程序需要默认浏览器的名称(没有打开),我在这里找到了一个很棒的教程: http//ryanfarley.com/blog/archive/2004/05/16/649.aspx

这应该适用于在Process.Start可以使用PATH环境变量找到的位置中具有名为IExplore.exe的可执行文件的每台计算机。

Process.Start文档

通过指定文件名来启动进程类似于在Windows“开始”菜单的“运行”对话框中键入信息。 因此,文件名不需要表示可执行文件。 它可以是扩展名与系统上安装的应用程序关联的任何文件类型。 例如,如果您将文本文件与编辑器(如记事本)关联,则文件名可以具有.txt扩展名;如果您具有带有文字处理工具的关联.doc文件(如Microsoft Word),则文件名可以具有.doc。 同样,与“运行”对话框可以接受带有或不带.exe扩展名的可执行文件名的方式相同,.exe扩展名在fileName参数中是可选的。 例如,您可以将fileName参数设置为“Notepad.exe”或“Notepad”。

如果有人重命名或删除了IExplore.exe ,或者它位于不在PATH环境变量中的位置,那么它将无效。

但是,如果您的目标是打开浏览器,那么我会像其他人建议的那样传递URL。

你也可以在那里扔一个网址。 Process.Start(" http://somewebsite.com "); )将始终工作并使用标准浏览器。

您可能应该直接运行HTML文件,以便尊重用户的关联。 作为一个用户,没有什么比让我明确设置我的首选项以使用其他浏览器时使用IE强制我使用IE更令人讨厌的了。

您可以创建一个简单的HTML文件来重定向您想要的实际链接,然后启动指向该更简单URL的进程。

尝试这个:

Process.Start("file:///g:/PathToHelpFolder/index.html#search?page=1.html");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM