296 votes

Comment ouvrir dans le navigateur par défaut en C#

Je suis en train de concevoir une petite application C# qui contient un navigateur web. Actuellement, tous les paramètres par défaut de mon ordinateur indiquent que Google Chrome est mon navigateur par défaut, mais lorsque je clique sur un lien dans mon application pour l'ouvrir dans une nouvelle fenêtre, il ouvre Internet Explorer. Existe-t-il un moyen de faire en sorte que ces liens s'ouvrent dans le navigateur par défaut ? Ou y a-t-il un problème sur mon ordinateur ?

Mon problème est que j'ai un navigateur Web dans l'application, donc si vous allez sur Google et tapez "stack overflow" et cliquez avec le bouton droit de la souris sur le premier lien et cliquez sur "Ouvrir dans une nouvelle fenêtre", il s'ouvre dans IE au lieu de Chrome. Est-ce que c'est quelque chose que j'ai mal codé ou est-ce qu'il y a un paramètre qui n'est pas correct sur mon ordinateur ?

\===EDIT===

C'est vraiment ennuyeux. Je sais déjà que le navigateur est IE, mais il fonctionnait bien avant. Lorsque je cliquais sur un lien, il s'ouvrait dans Chrome. À l'époque, j'utilisais sharp develop pour créer l'application car je n'arrivais pas à faire démarrer c# express. J'ai fait une nouvelle installation de Windows et comme je n'étais pas très avancé dans mon application, j'ai décidé de recommencer, et maintenant j'ai ce problème. C'est pourquoi je ne sais pas si c'est mon ordinateur ou non. Pourquoi IE lancerait-il l'ensemble du navigateur lorsque l'on clique sur un lien au lieu d'ouvrir simplement le nouveau lien dans le navigateur par défaut ?

0 votes

Hehe, convaincre IE d'ouvrir Chrome pour toi va être un peu difficile. Eh bien, pas un peu. Cela ne fonctionne pas non plus si vous exécutez IE directement. Ou Chrome si IE est l'application par défaut.

0 votes

@SLaks Mono ? De quoi parlez-vous ?

0 votes

1) getstartMenuDir Recherche de Firefox ou Chrome StandartName Besure. si non trouvé. 2) obtenir la liste des emplacements d'installation standard qui existent 32 64 chrome ff utiliser cela. si non 3) dernier recours utiliser les réponses.

9voto

EstevaoLuis Points 1270

Mon navigateur par défaut est Google Chrome et la réponse acceptée donne l'erreur suivante :

Le système ne trouve pas le fichier spécifié.

J'ai résolu le problème et réussi à ouvrir une URL avec le navigateur par défaut en utilisant ce code :

System.Diagnostics.Process.Start("explorer.exe", "http://google.com");

4 votes

La première réponse ne fonctionnait pas et celle-ci a fonctionné, merci.

6voto

mohkirkuk Points 107

Essayez ceci, à l'ancienne ;)

public static void openit(string x)
    {
        System.Diagnostics.Process.Start("cmd", "/C start" + " " + x);
    }

Utilisation : openit("www.google.com") ;

3 votes

Cela ne peut-il pas être exploité, à l'instar de "Shellsock" ?

1 votes

@JosephLennox c'est un excellent point ! il est probablement utile de mentionner que System.Diagnostics.Process.Start sur l'URL directement n'est pas beaucoup (du tout ?) plus sûr ! d'un autre côté, si l'utilisateur exécute votre application sur LEUR ordinateur (c'est probablement le cas), le pire qu'il puisse faire est de casser son propre système :P

4 votes

Ben Ça dépend d'où vient l'entrée. S'il s'agit d'une source de données partagée, un utilisateur pourrait entrer une commande malveillante et tous les autres utilisateurs qui cliquent sur "Go" seraient à sa merci.

5voto

THE DOCTOR Points 1870

Jetez un coup d'œil à la Contrôle GeckoFX .

GeckoFX est un composant open-source qui permet d'intégrer facilement Mozilla Gecko (Firefox) dans n'importe quelle application .NET Windows Forms. Écrit en C# propre, C#, entièrement commenté, GeckoFX est le remplacement parfait du navigateur Web par défaut WebBrowser basé sur Internet Explorer d'Internet Explorer.

0 votes

Mon problème est que j'ai un navigateur Web dans l'application, donc si vous allez sur Google et tapez "stack overflow" et cliquez avec le bouton droit de la souris sur le premier lien et cliquez sur "Ouvrir dans une nouvelle fenêtre", il s'ouvre dans IE au lieu de Chrome. Est-ce que j'ai mal codé ou est-ce qu'il y a un paramètre incorrect sur mon ordinateur ?

0 votes

@SLaks : Pourquoi dites-vous cela ? Je ne crois pas qu'il soit du tout difficile d'écrire une chaîne de caractères et de la rendre égale à GetDefaultBrowserPath().

0 votes

@Sean : Si vous avez un navigateur Web dans votre application, il utilisera IE par défaut. L'événement Navigating peut vous aider à contourner ce problème.

5voto

Jamrelian Points 615

Je l'utilise en .NET 5, sous Windows, avec Windows Forms. Il fonctionne même avec d'autres navigateurs par défaut (comme Firefox) :

Process.Start(new ProcessStartInfo { FileName = url, UseShellExecute = true });

Sur la base de este y este .

4voto

dotnet core jette une erreur si nous utilisons Process.Start(URL) . Le code suivant fonctionnera dans dotnet core . Vous pouvez ajouter n'importe quel navigateur à la place de Chrome .

var processes = Process.GetProcessesByName("Chrome");
var path  = processes.FirstOrDefault()?.MainModule?.FileName;
Process.Start(path,  url);

4 votes

Ce n'est pas une réponse à la question, le code ne sait pas quel est le navigateur par défaut.

0 votes

Il semble que l'utilisateur doive avoir Chrome déjà ouvert pour que cela fonctionne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X