-
C# WebBrowser IE버전 알맞게 변경하는 방법닷넷/WinForms 2022. 8. 3. 13:45반응형
public Form1() { InitializeComponent(); SetBrowserEmulationVersion(); } private const string InternetExplorerRootKey = @"Software\Microsoft\Internet Explorer"; private const string BrowserEmulationKey = InternetExplorerRootKey + @"\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 } #region 현재 설치되어있는 IE Explorer 버전 읽어오는것 public static int GetInternetExplorerMajorVersion() { int result = 0; try { RegistryKey key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey); if (key != null) { object value; value = key.GetValue("svcVersion", null) ?? key.GetValue("Version", null); if (value != null) { string version; int separator; version = value.ToString(); separator = version.IndexOf('.'); if (separator != -1) int.TryParse(version.Substring(0, separator), out result); } } } catch (SecurityException) { // The user does not have the permissions required to read from the registry key. } catch (UnauthorizedAccessException) { // The user does not have the necessary registry rights. } return result; } #endregion #region 에뮬레이션 브라우저 버전 읽어오기 public static BrowserEmulationVersion GetBrowserEmulationVersion() { BrowserEmulationVersion result = BrowserEmulationVersion.Default; try { RegistryKey key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true); if (key != null) { string programName; object value; programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]); value = key.GetValue(programName, null); if (value != null) result = (BrowserEmulationVersion)Convert.ToInt32(value); } } catch (SecurityException) { // The user does not have the permissions required to read from the registry key. } catch (UnauthorizedAccessException) { // The user does not have the necessary registry rights. } return result; } public static bool IsBrowserEmulationSet() => GetBrowserEmulationVersion() != BrowserEmulationVersion.Default; #endregion #region 에뮬레이션 브라우저 설정 public static bool SetBrowserEmulationVersion(BrowserEmulationVersion browserEmulationVersion) { bool result = false; try { RegistryKey key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true); if (key != null) { string programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]); if (browserEmulationVersion != BrowserEmulationVersion.Default) { // if it's a valid value, update or create the value key.SetValue(programName, (int)browserEmulationVersion, RegistryValueKind.DWord); } else { // otherwise, remove the existing value key.DeleteValue(programName, false); } result = true; } } catch (SecurityException) { // The user does not have the permissions required to read from the registry key. } catch (UnauthorizedAccessException) { // The user does not have the necessary registry rights. } return result; } public static bool SetBrowserEmulationVersion() { int ieVersion = GetInternetExplorerMajorVersion(); BrowserEmulationVersion emulationCode; if (ieVersion >= 11) { emulationCode = BrowserEmulationVersion.Version11; } else { switch (ieVersion) { case 10: emulationCode = BrowserEmulationVersion.Version10; break; case 9: emulationCode = BrowserEmulationVersion.Version9; break; case 8: emulationCode = BrowserEmulationVersion.Version8; break; default: emulationCode = BrowserEmulationVersion.Version7; break; } } return SetBrowserEmulationVersion(emulationCode); } #endregion
반응형'닷넷 > WinForms' 카테고리의 다른 글
C# DevExpress GridControl 열 전체 선택, 헤더에 체크박스 넣는 법 (0) 2022.08.25 [WinForms WebBrowser] 자바스크립트에서 C# 메소드를 호출하는 방법 (0) 2022.08.03 C# WebBrowser 쿠키 삭제 방법 (0) 2022.08.03 C# WinForms DevExpress GridControl multi header (Banded Grid Views) (0) 2022.03.21 C# WinForms에서 레이아웃 깨지는 문제 해결 방법. 디스플레이 해상도, 텍스트 배율 안 따라게 하기 (2) 2022.02.22