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

客户端程序内嵌Webbrowser控件时,默认情况都是使用IE7兼容模式打开网页的。但是IE7有很多新的特性不支持,导致无法正常显示出来,所以需要强制使用高版本的IE内核来加载、渲染。

 1 void ChangeRegedit(const wchar_t* pExeName)
 2 {
 3 if ( NULL == pExeName )
 4 return ;
 5 TCHAR szVersion[64] = {0};
 6 DWORD dwSize = 64;
 7 HKEY hKey;
 8 // 先获取IE版本
 9 if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Internet Explorer"), 0, KEY_READ, &hKey))
10 {
11 //首先读取IE11的位置
12 DWORD dwIeVersion = 0;
13 if ( ERROR_SUCCESS == RegQueryValueEx(hKey, L"svcVersion", 0, NULL, (LPBYTE)szVersion, &dwSize) )
14 {
15 TCHAR *pos = _tcschr(szVersion, TEXT(‘.‘));
16 if ( pos )
17 dwIeVersion = _ttoi(szVersion);
18 }
19 if ( dwIeVersion == 0 )
20 {//读取IE低版本的位置
21 if ( ERROR_SUCCESS == (hKey, L"Version", 0, NULL, (LPBYTE)szVersion, &dwSize) )
22 {
23 TCHAR *pos = _tcschr(szVersion, TEXT(‘.‘));
24 if (NULL == pos)
25 {
26 RegCloseKey(hKey);
27 return ;
28 }
29 *pos = 0;
30 dwIeVersion = _ttoi(szVersion);
31 }
32 }
33 RegCloseKey(hKey);
34 switch( dwIeVersion )
35 {
36 case 11: dwIeVersion = 11001; break;
37 case 10: dwIeVersion = 10001; break;
38 case 9: dwIeVersion = 9999; break;
39 case 8: dwIeVersion = 8888; break;
40 default: return ;
41 }
42 // 设置应用程序使用的IE版本
43 if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_BROWSER_EMULATION", 0, KEY_WRITE, &hKey))
44 {
45 dwSize = sizeof(dwIeVersion);
46 RegSetValueEx(hKey, pExeName, 0, REG_DWORD, (LPBYTE)&dwIeVersion, dwSize);
47 RegCloseKey(hKey);
48 }
49 }
50 }

转载:http://blog.csdn.net/mfcing/article/details/50460433

时间: 2024-09-30 00:04:37

使用Windows安装的最高版本IE内核加载内嵌页(转载)的相关文章

解决windows安装TensorFlow2.0beta版本时ERROR: Cannot uninstall 'wrapt'问题

pip install -U --ignore-installed wrapt enum34 simplejson netaddr 参考:https://bugs.launchpad.net/rally/+bug/1764545 解决windows安装TensorFlow2.0beta版本时ERROR: Cannot uninstall 'wrapt'问题 原文地址:https://www.cnblogs.com/xiaowei2092/p/11025155.html

Linux # Virtul Box 安装增强功能时, 未能加载虚拟光盘VBoxGuestAdditions.iso

问题: Virtul Box 安装增强功能时, 未能加载虚拟光盘VBoxGuestAdditions.iso 分析:通过分析日志,%vbox_path%\VirtualBox Guest Additions\install_drivers.log发现, 查看安装过程中的信息,如下图,发现缺少 相关dll文件, Linux # Virtul Box 安装增强功能时, 未能加载虚拟光盘VBoxGuestAdditions.iso,布布扣,bubuko.com Linux # Virtul Box 安

virtualbox安装增强功能时【未能加载虚拟光盘】

virtualbox安装增强功能时[未能加载虚拟光盘] 今天在使用Virtualbox中的Ubuntu虚拟机,想安装增强功能来实现更改分辨率,但是在安装时出错:未能加载虚拟光驱 VBoxsGuestAdditions.iso到虚拟电脑 经过折腾,最后通过互联网找到了解决方法: 进入系统在侧边找到如图加载的虚拟光驱,右击,点击弹出,然后就可正常安装增强功能了 点击安装增强功能 点击"运行" 输入登录系统的密码,点击授权,就开始自动安装了 如图,为安装界面,安装完成后按下回车键,就按照成功

webview4.4以上版本使用loadurl加载过长js文件失效问题

因为业务需要, 需要在使用Webview的时候,动态的加载js文件到页面中,之前SDK Target版本为16 , 无论JS文件多大,使用一切正常~ 近期将target版本改为了19 ,发现存在js过大的时候,使用4.4以上版本执行项目,JS文件不执行. 查看源码发现在4.4版本以上内核对处理js做了区别处理: 495 @Override 496 public void loadUrl(final String url, Map<String, String> additionalHttpHe

004-ant design pro安装、目录结构、项目加载启动

一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等,而src目录中又包含components目录等等.每次在新建项目时,手动创建这些固定的文件目录.脚手架的作用就是帮助你完成这些重复性的工作,包括一键生成主要的目录结构.安装依赖等等. 1.2.参考地址 ant design参看地址:https://ant.design/docs/react/intr

CAD2014以上版本不信任加载项解决方法

前一段时间做CAD插件支持版本升级遇到了一个很棘手的问题,CAD2014以上版本增加了受信任功能,每次用程序启动CAD并加载arx文件时都弹出对话框询问是否加载 我的解决方法如下:(仅供参考) 读取注册表(位置根据版本位置各自对应): HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R19.1\ACAD-D001:804\Profiles 其 “默认” 所对应的字段就是用使用的当前配置名,如下图所示: 读取当前配置项 HKEY_CURRENT_USER\S

Windows Store App JavaScript 开发:页面加载

  在开发基于JavaScript的Windows应用商店应用时,可以使用HtmlControl和PageControl控件加载一个页面,这两个WinJS库控件曾在上面的内容中提到过,HtmlControl控件接收一个包含页面地址的对象作为参数,并根据这个地址加载相应的页面:PageControl控件是自定义控件,可以使用WinJS.UI.Pages.define函数将一个页面定义为PageControl控件,然后在其他页面中使用,使用这个PageControl控件就相当于加载了该控件相对应的页

Windows API 编程-----DLL编程之禁止加载自己

和可执行文件一样,动态链接库也有自己的入口地址,如果系统或者当前进程的某个线程调用LoadLibrary函数加载或者使用FreeLibrary卸载该动态链接库的时候,会自动使用3个特定的堆栈参数跳转到该地址来运行.入口函数是为了完成动态链接库代码的初始化和善后工作,比如卸载后的资源释放. 这三个参数具有特殊的含义. BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) 第一个参数

Linux0.11内核--加载可执行二进制文件之3.exec

最后剩下最核心的函数do_execve了,由于这里为了简单起见我不分析shell命令的情况, /* * 'do_execve()'函数执行一个新程序. */ //// execve()系统中断调用函数.加载并执行子进程(其它程序). // 该函数系统中断调用(int 0x80)功能号__NR_execve 调用的函数. // 参数:eip - 指向堆栈中调用系统中断的程序代码指针eip 处,参见kernel/system_call.s 程序 // 开始部分的说明:tmp - 系统中断调用本函数时