Cet article explique comment forcer le contrôle WebBrowser dans une application C # Windows Forms pour utiliser la dernière version installée d'Internet Explorer. Le comportement par défaut consiste à utiliser IE7, mais cela peut être remplacé.
La solution consiste à modifier une clé de registre. Cela peut être fait par programme lors du démarrage ou de l'installation de l'application. Le code fourni propose deux approches: une méthode plus simple et une approche plus avancée à l'aide d'une classe d'assistance.
Méthode 1: Modification du registre direct
Cette méthode définit directement la clé de registre à l'aide du nom de l'application. La valeur clé détermine la version IE utilisée.
<code class="language-csharp">private void Form1_Load(object sender, EventArgs e) { string appName = Process.GetCurrentProcess().ProcessName + ".exe"; SetIEVersionKey(appName, 11001); // Use IE11 (Edge mode, regardless of DOCTYPE) - Adjust as needed } private void SetIEVersionKey(string appName, int ieVersion) { RegistryKey regKey = null; try { // Handle 64-bit and 32-bit systems regKey = Environment.Is64BitOperatingSystem ? Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true) : Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true); if (regKey == null) { MessageBox.Show("Registry access failed."); return; } if (regKey.GetValue(appName) == null || (int)regKey.GetValue(appName) != ieVersion) { regKey.SetValue(appName, ieVersion, RegistryValueKind.DWord); MessageBox.Show("IE version setting applied successfully."); } else { MessageBox.Show("IE version setting already present."); } } catch (Exception ex) { MessageBox.Show($"Registry operation failed: {ex.Message}"); } finally { regKey?.Close(); } }</code>
Méthode 2: classe d'assistance pour la détection de version dynamique IE
Cette méthode avancée utilise une classe d'assistance (WebBrowserHelper
) pour déterminer la dernière version IE installée et appliquer le paramètre de registre approprié.
<code class="language-csharp">public class WebBrowserHelper { // ... (GetEmbVersion, FixBrowserVersion, FixBrowserVersion_Internal, GetBrowserVersion methods as provided in the original input) ... } // Usage: WebBrowserHelper.FixBrowserVersion(); // Uses the latest detected IE version // or WebBrowserHelper.FixBrowserVersion("MyApplicationName"); // Specifies application name</code>
Considérations importantes:
11001
(mode Edge IE11) comme exemple. Reportez-vous à la table dans l'entrée d'origine pour les autres valeurs de version IE. Choisissez la valeur appropriée pour vos besoins et votre version cible IE. <requestedExecutionLevel level="highestAvailable" uiaccess="false"/>
pour demander les autorisations nécessaires. <meta content="IE=11" http-equiv="X-UA-Compatible"></meta>
Meta à vos pages Web. N'oubliez pas de remplacer "MyApplicationName"
par le nom réel de votre application si vous utilisez la version nommée de la classe d'aide. Choisissez la méthode qui convient le mieux à vos besoins et testez toujours soigneusement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!