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.

0voto

dfgv Points 101

Mettre à jour le registre avec la version actuelle de l'explorateur
@"Logiciel \Microsoft\Internet Explorer \Main\FeatureControl\FEATURE_BROWSER_EMULATION "

public enum BrowserEmulationVersion
{
    Default = 0,
    Version7 = 7000,
    Version8 = 8000,
    Version8Standards = 8888,
    Version9 = 9000,
    Version9Standards = 9999,
    Version10 = 10000,
    Version10Standards = 10001,
    Version11 = 11000,
    Version11Edge = 11001
}

key.SetValue(programName, (int)browserEmulationVersion, RegistryValueKind.DWord);

0voto

Kye Points 18

Cela fonctionne très bien pour .NET 5 (Windows) :

 ProcessStartInfo psi = new ProcessStartInfo {
   FileName = "cmd.exe",
     Arguments = $ "/C start https://stackoverflow.com/",
     WindowStyle = ProcessWindowStyle.Hidden,
     CreateNoWindow = true
 };
 Process.Start(psi);

0 votes

Cela fonctionne bien, mais pas seulement pour l'utilisateur - cela peut être utilisé pour exécuter un code malveillant puisque vous créez un processus cmd.exe et lui passez des arguments.

0voto

hossein sedighian Points 987

Pour résoudre le problème avec Net 6 J'ai utilisé ce code de ChromeLauncher ,le navigateur par défaut sera comme celui-ci

internal static class ChromeLauncher
{
    private const string ChromeAppKey = @"\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe";

    private static string ChromeAppFileName
    {
        get
        {
            return (string) (Registry.GetValue("HKEY_LOCAL_MACHINE" + ChromeAppKey, "", null) ??
                                Registry.GetValue("HKEY_CURRENT_USER" + ChromeAppKey, "", null));
        }
    }

    public static void OpenLink(string url)
    {
        string chromeAppFileName = ChromeAppFileName;
        if (string.IsNullOrEmpty(chromeAppFileName))
        {
            throw new Exception("Could not find chrome.exe!");
        }
        Process.Start(chromeAppFileName, url);
    }
}

-1voto

Vous pouvez utiliser ce code

System.Diagnostics.Process.Start("www.bing.com")

0 votes

C'est une réponse en double, pourquoi ?

1 votes

@Vega Quelqu'un qui fait de la pub pour Bing ? Difficile à dire

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