2008-09-12 23 views
68

Estoy tratando de proporcionar un enlace al sitio web de mi empresa desde un formulario de Windows. Quiero comportarme bien y lanzar utilizando el navegador preferido del usuario.Abrir una URL de Windows Forms

¿Cuál es la mejor manera de abrir una URL en el navegador predeterminado del usuario desde una aplicación de Windows Forms?

+1

Puede ser que agreguen una API a la biblioteca estándar, oigo que esta cosa web va a ser grande. –

Respuesta

115

Este article te guiará por ello.

Respuesta corta:

ProcessStartInfo sInfo = new ProcessStartInfo("http://mysite.com/"); 
Process.Start(sInfo); 
+0

Preciso y preciso. +1 – iMatoria

+2

¿Por qué recibo una Win32Exception no fue manejada: "Aplicación no encontrada" cuando pruebo esto? Estoy en Win7 64 bits. Gracias – TomShreds

+2

@Tom: Parece que el navegador predeterminado está configurado incorrectamente. –

33
using System.Diagnostics; 

Process.Start("http://www.google.com/"); 

Este enfoque me ha funcionado, pero me podría estar faltando algo importante.

6

me gusta el enfoque descrito here. Tiene en cuenta posibles excepciones y retrasos al iniciar el navegador.

Para obtener mejores prácticas, asegúrese de no solo ignorar la excepción, sino atraparla y realizar una acción adecuada (por ejemplo, notificar al usuario que la apertura del navegador para navegar a la url falló).

+2

Es cierto, y eso siempre debes considerar. Sin embargo, su método de simplemente tragar excepciones me da escalofríos. Es posible que pueda argumentar en este caso específico, pero aún así nunca tendré un bloque de "captura" vacío. Es muy fácil enmascarar un problema de esa manera. –

+0

tienes razón. En realidad, no pensé en una posible excepción (y debería haberlo hecho) hasta que vi la publicación. – Sumrak

-3

El enfoque anterior es perfecto, me gustaría recomendar este enfoque para que pueda pasar sus parámetros.

Process mypr; 
mypr = Process.Start("iexplore.exe", "pass the name of website"); 
+1

Esto debería ser un comentario, no una respuesta. –

+0

Utilice un estilo de escritura adecuado y evite escribir en "lenguaje de chat" aquí ... – Spontifixus

+1

Me preguntaba por qué sentía que este enfoque es superior. Me parece que esto no es lo que originalmente se pretendía, que estaba abierto en el navegador preferido del usuario. Este método proporciona el ejecutable del navegador para que siempre se abra en IE, incluso si el usuario ha especificado Chrome o Firefox como su navegador web preferido. –

6

Aquí es lo mejor de ambos mundos:

Dim sInfo As New ProcessStartInfo("http://www.mysite.com") 

Try 
    Process.Start(sInfo) 
Catch ex As Exception 
    Process.Start("iexplore.exe", sInfo.FileName) 
End Try 

me encontré con que la respuesta proporcionada por Blorgbeard fallará cuando una aplicación de escritorio que se ejecuta en un dispositivo Windows 8. Para Camillo, debe intentar abrir esto con la aplicación de navegador predeterminada del usuario, pero si la aplicación browswer no está asignada, se lanzará una excepción no controlada.

Lo publico como la respuesta, ya que maneja la excepción mientras se intenta abrir el enlace en el navegador predeterminado.

Cuestiones relacionadas