打开默认Web浏览器

时间:2009-10-13 18:44:14

标签: .net vb.net winforms browser

我正在使用以下功能打开用户的默认网络浏览器。

 Public Function ShowHelp(ByVal url As String) As System.Diagnostics.Process
    Dim startInfo As New Diagnostics.ProcessStartInfo()
    startInfo.FileName = url
    startInfo.WindowStyle = ProcessWindowStyle.Maximized
    Return System.Diagnostics.Process.Start(startInfo)
 End Function

该函数多次返回错误(在用户计算机上)“系统找不到指定的文件”

我猜用户没有设置默认的Web浏览器。 为什么我会收到此错误?如何在调用此函数之前添加默认的Web浏览器检查?

5 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

这是通常使用URL启动浏览器的正确方法,但如果失败,我会抓住该特定异常,然后尝试调用iexplore <url>在IE中打开URL,因为它必将安装在任何Windows系统上。 (我假设你不是在这里以Mono / Linux为目标。)

答案 2 :(得分:0)

这是在C#中,但这是一篇很好的文章:

  

http://ryanfarley.com/blog/archive/2004/05/16/649.aspx

这是C#作为VB.NET:

Private Function getDefaultBrowser() As String
    Dim browser As String = String.Empty
    Dim key As RegistryKey = Nothing
    Try
        key = Registry.ClassesRoot.OpenSubKey("HTTP\shell\open\command", False)

        'trim off quotes
        browser = key.GetValue(Nothing).ToString().ToLower().Replace("""", "")
        If Not browser.EndsWith("exe") Then
            'get rid of everything after the ".exe"
            browser = browser.Substring(0, browser.LastIndexOf(".exe") + 4)
        End If
    Finally
        If key IsNot Nothing Then
            key.Close()
        End If
    End Try
    Return browser
End Function

答案 3 :(得分:0)

如果您在Windows上运行,则以下命令行应该可以在任何地方运行:

rundll32 url.dll,FileProtocolHandler <your_url>

其中&lt; your_url&gt;是要导航到的网页网址。

Public Function ShowHelp(ByVal url As String) As System.Diagnostics.Process
        Dim startInfo As New Diagnostics.ProcessStartInfo()
        startInfo.FileName = "rundll32 url.dll,FileProtocolHandler"
        startInfo.Arguments = url
        startInfo.WindowStyle = ProcessWindowStyle.Maximized
        Return System.Diagnostics.Process.Start(startInfo)
End Function

答案 4 :(得分:0)

如果您希望以“.html”或“htm”结尾显示文件,则可以将其传递给Process.Start()方法。同样可以使用URL。

(您必须设置标志以使Process.Start()使用shell方法。)