Usar o Visual C# para iniciar o navegador de Internet padrão programaticamente

Este artigo mostra como iniciar o navegador de Internet padrão usando o Visual C#.

Versão original do produto: Visual Studio
Número de KB original: 305703

Observação

Especificar a URL, o FTP ou o arquivo a ser aberto

Você pode especificar uma URL, um arquivo ou um endereço FTP (Protocolo de Transferência de Arquivo). Todas essas três atribuições são válidas:

string target= "http://www.microsoft.com";
string target = "ftp://ftp.microsoft.com";
string target = "C:\\Program Files\\Microsoft Visual Studio\\INSTALL.HTM";

Usar o método Iniciar classe de processo para iniciar o navegador

A Process classe contém um método estático Start . Como é um método estático, você pode chamar Start sem ter uma instância de uma Process classe.

System.Diagnostics.Process.Start(target);

Para obter mais informações sobre a Process classe, consulte Classe de Processo.

Fornecer tratamento de exceção

Como você aproveita a propriedade padrão UseShellExecute ao chamar o Start método, não precisa consultar explicitamente o registro para determinar qual navegador é o padrão. No entanto, se você usar essa abordagem em um computador que não tenha um navegador instalado, ocorrerá uma exceção. Essa exceção deve ser capturada para que a ação apropriada possa ser tomada.

Este exemplo prende explicitamente um erro gerado quando a chave de registro necessária não é encontrada e indica que nenhum navegador está instalado. Além disso, um manipulador de exceção geral é fornecido para outros erros que podem ocorrer. O try...catch bloco é demonstrado na listagem de código completa.

Exemplo de código completo

string target= "http://www.microsoft.com";
//Use no more than one assignment when you test this code.
//string target = "ftp://ftp.microsoft.com";
//string target = "C:\\Program Files\\Microsoft Visual Studio\\INSTALL.HTM";
try
{
    System.Diagnostics.Process.Start(target);
}
catch (System.ComponentModel.Win32Exception noBrowser)
{
    if (noBrowser.ErrorCode==-2147467259)
    MessageBox.Show(noBrowser.Message);
}
catch (System.Exception other)
{
    MessageBox.Show(other.Message);
}

Solução de problemas

Esse código é altamente dependente das associações de tipo de arquivo de aplicativo no hive do HKCR (HKEY_CLASSES_ROOT) do registro. Isso pode levar a resultados inesperados e exceções se o registro for danificado. Além disso, tipos de arquivo e extensões podem estar associados a aplicativos diferentes do navegador. Por exemplo, arquivos HTM ou HTML podem estar associados ao software de desenvolvimento da Web em vez do navegador.