使用Windows安装的最高版本IE内核加载内嵌页

来源:互联网 发布:r语言 社交网络关系图 编辑:程序博客网 时间:2024/05/29 06:42
客户端程序内嵌Webbrowser控件时,默认情况都是使用IE7兼容模式打开网页的。但是IE7有很多新的特性不支持,导致无法正常显示出来,所以需要强制使用高版本的IE内核来加载、渲染。上代码:
void ChangeRegedit(const wchar_t* pExeName){if ( NULL == pExeName )return ;TCHAR szVersion[64] = {0};   DWORD dwSize = 64;   HKEY hKey;// 先获取IE版本if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Internet Explorer"), 0, KEY_READ, &hKey)){//首先读取IE11的位置DWORD dwIeVersion = 0;if ( ERROR_SUCCESS == RegQueryValueEx(hKey, L"svcVersion", 0, NULL, (LPBYTE)szVersion, &dwSize) ){TCHAR *pos = _tcschr(szVersion, TEXT('.'));if ( pos )dwIeVersion = _ttoi(szVersion);}if ( dwIeVersion == 0 ){//读取IE低版本的位置if ( ERROR_SUCCESS == (hKey, L"Version", 0, NULL, (LPBYTE)szVersion, &dwSize) ){TCHAR *pos = _tcschr(szVersion, TEXT('.'));if (NULL == pos){RegCloseKey(hKey);return ;}*pos = 0;dwIeVersion = _ttoi(szVersion);}}RegCloseKey(hKey);switch( dwIeVersion ){case 11: dwIeVersion = 11001; break;case 10: dwIeVersion = 10001; break;case 9: dwIeVersion = 9999; break;case 8: dwIeVersion = 8888; break;default: return ;}// 设置应用程序使用的IE版本if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_BROWSER_EMULATION", 0, KEY_WRITE, &hKey)){dwSize = sizeof(dwIeVersion);RegSetValueEx(hKey, pExeName, 0, REG_DWORD, (LPBYTE)&dwIeVersion, dwSize);RegCloseKey(hKey);}}}

老外的一篇文章讲的比较详细:http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version
0 0
原创粉丝点击