【问题标题】:Opening default web browser打开默认网络浏览器
【发布时间】:2009-10-13 18:44:14
【问题描述】:

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

 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 浏览器检查?

【问题讨论】:

  • 你确定它是默认浏览器吗?
  • 对不起?我不明白你的评论

标签: .net vb.net winforms browser


【解决方案1】:
 Private Sub helpRichTextBox_LinkClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.LinkClickedEventArgs) Handles helpRichTextBox.LinkClicked
        System.Diagnostics.Process.Start(e.LinkText)
    End Sub

【讨论】:

    【解决方案2】:

    一般来说,这是使用 URL 启动浏览器的正确方法,但如果它失败了,我会捕获该特定异常,然后尝试调用 iexplore <url> 在 IE 中打开 URL,因为它已绑定可以安装在任何 Windows 系统上。 (我假设您在这里不是针对 Mono/Linux。)

    【讨论】:

    • 各种法律案件迫使微软创建了许多没有 IE 的 Windows 版本——你不能假设它存在。
    • @MarkJ:是的,我现在确实记得。尽管如此,它通常还是存在的。在我看来,这是最后的手段。
    【解决方案3】:

    这是用 C# 编写的,但这是一篇好文章:

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

    这是 VB.NET 的 C#:

    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
    

    【讨论】:

      【解决方案4】:

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

      rundll32 url.dll,FileProtocolHandler <your_url>
      

      其中 是要导航到的网页 URL。

      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
      

      【讨论】:

        【解决方案5】:

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

        (您必须设置获取 Process.Start() 的标志才能使用 shell 方法。)

        【讨论】:

          猜你喜欢
          • 2017-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-06
          • 1970-01-01
          • 2021-03-26
          • 1970-01-01
          • 2014-08-12
          相关资源
          最近更新 更多