Открытие веб-браузера по умолчанию - PullRequest
3 голосов
/ 13 октября 2009

Я использую функцию ниже, чтобы открыть веб-браузер пользователя по умолчанию.

 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

Пару раз функция возвращала ошибку (на компьютере пользователя) "система не может найти указанный файл"

Полагаю, пользователь не установил веб-браузер по умолчанию. Почему я получаю эту ошибку? Как добавить проверку веб-браузера по умолчанию перед вызовом этой функции?

Ответы [ 5 ]

2 голосов
/ 24 июля 2010
 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
1 голос
/ 13 октября 2009

Это правильный способ запустить браузер с URL-адресом в целом, но в случае его сбоя я просто перехватил бы это конкретное исключение, а затем попытался бы вызвать iexplore <url>, чтобы открыть URL-адрес в IE, учитывая, что он связан быть установленным в любой системе Windows. (Я предполагаю, что вы не ориентируетесь на Mono / Linux здесь.)

0 голосов
/ 15 октября 2009

Если вы хотите отобразить файл, оканчивающийся на «.html» или «htm», вы можете просто передать его методу Process.Start (). То же самое может работать с URL.

(У вас должен быть установлен флаг, который заставляет Process.Start () использовать методы оболочки.)

0 голосов
/ 13 октября 2009

Если вы работаете в 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
0 голосов
/ 13 октября 2009

Это в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...