C#의 웹브라우저는 기본적으로 Explorer 버전이 7.0 이라고 한다.
최근의 웹 페이지들은 구버전의 IE를 지원하지 않는다. 따라서 C#의 웹브라우저를 설치된 Explorer 버전과 동일하게 해줘야 작동이 될텐데... 아래 코드를 이용하면된다.
region으로 설명을 구분해놨으니 쉬울것임.
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;
result = 0;
try
{
RegistryKey key;
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;
result = BrowserEmulationVersion.Default;
try
{
RegistryKey key;
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()
{
return GetBrowserEmulationVersion() != BrowserEmulationVersion.Default;
}
#endregion
#region 에뮬레이션 브라우저 설정
public static bool SetBrowserEmulationVersion(BrowserEmulationVersion browserEmulationVersion)
{
bool result;
result = false;
try
{
RegistryKey key;
key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
if (key != null)
{
string programName;
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;
BrowserEmulationVersion emulationCode;
ieVersion = GetInternetExplorerMajorVersion();
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
private void Form1_Load(object sender, EventArgs e)
{
SetBrowserEmulationVersion() <---- 사용자의 PC에 설치되어 있는 익스플러로의 버전을 읽어와 동일하게 설정해준다. 만약 버전을 다르게 하고 싶으면 위에 코드를 참조해서 파라미터 값을 넣어주면된다.
}
'개발 > C#' 카테고리의 다른 글
[팁] 폼 상단바 클릭 이벤트 (0) | 2018.02.02 |
---|---|
[팁] C# FormBorderStyle None 에서 폼 사이즈 조절하기 (4) | 2018.02.01 |
[팁] C# 듀얼모니터에서 현재 실행된 위치에서 새창열기 (0) | 2018.01.29 |
[팁] 디지털 서명 (0) | 2018.01.27 |
[팁] C# 관리자 권한설정 (0) | 2018.01.26 |
[팁] C# 웹브라우저 ESC키로 종료하기 (0) | 2018.01.25 |
[팁] C# 웹브라우져를 익스플로러처럼 설정하기 (0) | 2018.01.25 |
[팁] C# 폼로드시 화면꽉차게 하기 (0) | 2018.01.25 |