Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Windows窗体启动外部浏览器_C#_Winforms - Fatal编程技术网

C# 使用Windows窗体启动外部浏览器

C# 使用Windows窗体启动外部浏览器,c#,winforms,C#,Winforms,我已经编写了一个程序,用于处理将html文件放入cms并将其从cms中导出的问题。在这个程序中,我有一些代码,您可以在不同的浏览器上预览。然而,当我运行它时,我得到一个未处理的异常,声明“无法启动进程,因为尚未提供文件名。” 只有在尝试启动chrome或firefox时,IE才能正常工作 只有当我通过高级安装程序运行我的程序并将其安装到我的机器上时,才会发生这种情况。在发布模式下直接从VS2012构建程序时,这种情况才会发生 我的代码如下: if (chk_ExternalBrowser.C

我已经编写了一个程序,用于处理将html文件放入cms并将其从cms中导出的问题。在这个程序中,我有一些代码,您可以在不同的浏览器上预览。然而,当我运行它时,我得到一个未处理的异常,声明“无法启动进程,因为尚未提供文件名。”

  • 只有在尝试启动chrome或firefox时,IE才能正常工作
  • 只有当我通过高级安装程序运行我的程序并将其安装到我的机器上时,才会发生这种情况。在发布模式下直接从VS2012构建程序时,这种情况才会发生
我的代码如下:

if (chk_ExternalBrowser.Checked)
{
    string ffTempFilePath = "\"" + tempFilePath + "\"";//tempFilePath is an absolute path to the html file

    Process.Start(browserPaths[1], ffTempFilePath);//launch FF, browserPaths[1] contains an absolute path to firefox.exe
}
提前感谢您提供的任何见解

更新: 导致此错误的原因是我没有用引号括住browserPaths[1]的内容。现在我没有收到任何错误,但是打开了一个windows资源管理器窗口,而不是firefox浏览器。我的密码如下:

if (chk_ExternalBrowser.Checked)
{
    string ffTempFilePath = "\"" + tempFilePath + "\"";//after this line ffTempFilePath == \"C:\\Users\\<username ommitted>\\Documents\\Visual Studio 2012\\Projects\\Local_IMP\\Local_IMP\\bin\\Release\\TEMP.html\"

    string tempTest = "\"" + browserPaths[1] + "\"";//after this line tempTest == \"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\"
    Process.Start(tempTest, ffTempFilePath);//launch FF
}
if(chk\u ExternalBrowser.Checked)
{
字符串ffTempFilePath=“\”“+tempFilePath+”\”“;//此行后ffTempFilePath==“C:\\Users\\\\Documents\\Visual Studio 2012\\Project\\Local\u IMP\\Local\u IMP\\bin\\Release\\TEMP.html\”
string testest=“\”“+BrowserPath[1]+“\”“;//这一行之后,testest==“C:\\Program Files(x86)\\Mozilla Firefox\\Firefox.exe”
Process.Start(testest,ffTempFilePath);//启动FF
}

结果表明,我只在文件中输入了\n以结束一行,而不是\r\n,因此我只正确阅读了第1行的IE,而没有正确阅读后续行中的其他IE。

如果Start()的第一个参数是空字符串,则会引发异常。您如何准确确定浏览器的安装路径?
ffTempFilePath
browserPaths[1]
的值是多少?我将有根据地猜测这些变量的实际值并不是您所期望的值。我确实通过了Ramhound,但正如我所说的,在调试时没有出现问题:(我通过在应用程序第一次启动时提示用户输入安装路径来确定安装路径。然后存储并从文本文件中读取安装路径。为什么文件名后面有一个“``号?这段代码在调试模式下无法工作,但在发布模式下会导致问题。@gaynorvader-发布该代码。)用于确定
tempFilePath
的值,这就是安装产品时其不起作用的原因。当然,您确实应该确定默认浏览器是什么,然后启动它。