2008-09-12 6 views
68

J'essaie de fournir un lien vers le site Web de mon entreprise à partir d'un Windows Form. Je veux être bien comporté et lancer en utilisant le navigateur préféré de l'utilisateur. Quelle est la meilleure façon d'ouvrir une URL dans le navigateur par défaut de l'utilisateur à partir d'une application Windows Forms?Ouvrir une URL à partir de Windows Forms

+1

Peut-être qu'ils vont ajouter une API à la bibliothèque standard, j'entends que cette chose web va être grand. –

Répondre

115

Cette article vous guidera à travers elle.

Réponse courte:

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

Précis et précis. +1 – iMatoria

+2

Pourquoi une exception Win32Exception n'a-t-elle pas été gérée: "Application not found" lorsque j'essaie? Je suis sur Win7 64bit. Merci – TomShreds

+2

@Tom: Il semble que le navigateur par défaut est mal défini. –

33
using System.Diagnostics; 

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

Cette approche a fonctionné pour moi, mais il pourrait me manquer quelque chose d'important.

6

J'aime l'approche décrite here. Il prend en compte les éventuelles exceptions et retards lors du lancement du navigateur. Pour la meilleure pratique, assurez-vous de ne pas ignorer l'exception, mais de l'intercepter et d'effectuer une action appropriée (par exemple, notifier à l'utilisateur que l'ouverture du navigateur pour naviguer vers l'url a échoué).

+2

Vrai, et que vous devriez toujours considérer. Leur méthode d'avaler des exceptions me fait grincer des dents. Vous pourriez être en mesure de faire des arguments dans ce cas précis, mais je n'aurais jamais un bloc "catch" vide. Il est trop facile de masquer entièrement un problème de cette façon. –

+0

vous avez raison. Je n'ai pas vraiment pensé à l'exception possible (et je devrais avoir) jusqu'à ce que j'ai vu le poste. – Sumrak

-3

L'approche ci-dessus est parfaite, je voudrais recommander cette approche à l'endroit où vous pouvez transmettre vos paramètres.

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

Cela devrait être un commentaire, pas une réponse. –

+0

Veuillez utiliser un style d'écriture approprié, et ne pas écrire dans la "langue du chat" ici ... – Spontifixus

+1

Je me demandais pourquoi vous pensiez que cette approche était supérieure? Il me semble que cela ne correspond pas à ce qui était initialement prévu, qui était ouvert dans le navigateur préféré de l'utilisateur. Cette méthode fournit le navigateur exécutable de sorte qu'il serait toujours ouvert dans IE même si l'utilisateur avait spécifié Chrome ou Firefox comme navigateur Web préféré. –

6

Voici le meilleur des deux mondes:

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 

Je trouve que la réponse fournie par Blorgbeard échouera quand une application de bureau est exécuté sur un appareil Windows 8. Pour le point de Camillo, vous devriez essayer d'ouvrir ceci avec l'application de navigateur par défaut de l'utilisateur, mais si l'application de navigateur n'est pas assignée, une exception non gérée sera levée.

Je publie ceci comme réponse car il gère l'exception tout en essayant toujours d'ouvrir le lien dans le navigateur par défaut.