Comment définir IE9 par défaut pour le navigateur Web?

Je développe une application en C # .NET. Je veux utiliser la version IE9 pour WebBrowser; soit IE9 est installé sur le système ou non.

Est-il possible d’utiliser IE9 avec WebBrower et peut-être qu’IE9 n’est pas installé sur mon système?

Avec Windows Internet Explorer 8 ou une version ultérieure, la fonctionnalité FEATURE_BROWSER_EMULATION définit le mode d’émulation par défaut pour Internet Explorer. Valeur 9999 – oblige les pages Web à être affichées en mode Norme IE9, quelle que soit la directive! DOCTYPE. IE9 ou une version ultérieure doit être installé sur le système cible. Vérifier les contrôles de fonctionnalité Internet (B..C)

private static void WebBrowserVersionEmulation() { const ssortingng BROWSER_EMULATION_KEY = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; // // app.exe and app.vshost.exe Ssortingng appname = Process.GetCurrentProcess().ProcessName + ".exe"; // // Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive. const int browserEmulationMode = 9999; RegistryKey browserEmulationKey = Registry.CurrentUser.OpenSubKey(BROWSER_EMULATION_KEY,RegistryKeyPermissionCheck.ReadWriteSubTree) ?? Registry.CurrentUser.CreateSubKey(BROWSER_EMULATION_KEY); if (browserEmulationKey != null) { browserEmulationKey.SetValue(appname, browserEmulationMode, RegistryValueKind.DWord); browserEmulationKey.Close(); } } 

Insérer

 "" 

Dans votre page html, mais vous devez connaître le contrôle Web_browser dépendant de la version d’IE déjà installée sur le système d’exploitation cible

Pour cela, vous devez rechercher

  • Quelle est la version du navigateur sous-jacent (la clé de registre peut renvoyer l’ancienne version installée). Le code le plus simple que j’utilise demande au contrôle WebBrowser

     Navigateur WebBrowser = nouveau WebBrowser
     Version ver = browser.Version ();  // Avec ver.Major, vous pouvez décider de l'EMULATION
    

  • Le nom ex-app de votre application (diffère lorsque vous exécutez l’environnement de débogage vs “myapp” .vshost.exe). Ce code j’ai trouvé quelque part:

     // Ce code détecte le .vshost.  lors de l'exécution en vs ide
     [DllImport ("kernel32.dll", SetLastError = true)]
     privé statique externe int GetModuleFileName ([In] IntPtr hModule,
                                             [Out] SsortingngBuilder lpFilename,
                                             [In] [MarshalAs (UnmanagedType.U4)] int nSize);
     Chaîne statique publique getAppExeName ()
     {
        SsortingngBuilder appname = new SsortingngBuilder (1024);
        GetModuleFileName (IntPtr.Zero, nomapp, nom app.Capacity); 
        return Path.GetFileName (appname.ToSsortingng ());  // retourne la partie du nom de fichier
     }
    

  • Vous pouvez maintenant calculer l’entrée de registre nécessaire à la compatibilité du navigateur. L’entrée peut être dans Registry.LocalMachine (droits d’access requirejs) ou Registry.CurrentUser. Je vérifie le registre à chaque démarrage du programme, donc, je vérifie d’abord l’existence de l’entrée

     ssortingng regSubKey = @ "Logiciel \ Microsoft \ Internet Explorer \ Principal \ FeatureControl \ FEATURE_BROWSER_EMULATION";
     ssortingng version = "" + ver.Version + "0000";  // version installée x 10000
     chaîne appname = getAppExeName ();
     RegistryKey rs = Registry.CurrentUser.OpenSubKey (regSubKey);
     keyval = rs.GetValue (appname);
     rs.Close ();
     if (keyval! = null && keyval.ToSsortingng (). Equals (version))
          revenir;  // déjà fait et aucune mise à jour de navigateur installée.
     //
     // Créer une clé pour cette application et cette version
     rs = Registry.LocalMachine.CreateSubKey (regSubKey);
     rs.SetValue (application, version, RegistryValueKind.DWord);
     rs.Flush ();
     rs.Close ();
    

  • En mode 64 bits + 32 bits, vous devrez peut-être également créer une entrée dans “Software \ Wow6432Node”.

Après avoir défini la clé de registre, le contrôle WebBrowser doit commencer par l’émulation requirejse.

Non, l’élément webbrowser-element (je pense que vous entendez ceci) est basé sur IE6. Vous pouvez uniquement lancer le processus de IE9 (vous ne connaissez pas le nom, mais pour firefox, il se contente de “firefox.exe”) du programme.

Vous pouvez lire la version du registre:

 var ieVersion = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Internet Explorer").GetValue("Version"); 

ou

Si vous avez un contrôle WebBrowser, vous pouvez le récupérer à partir de là:

 WebBrowser browser = new WebBrowser(); Version ver = browser.Version;