当前位置:首页 > 教育

webbrowser 修改WebBrowser控件的内核解决方案

首先说一下原理

目前大浏览器都是用IE的核心。这个核心只提供HTML/JS执行和渲染,并没有给出任何关于接口和一些特性的东西。所以,如果是基于IE内核开发自己的浏览器,需要自己完成这些内容。一张图很好的说明了这种情况。IE浏览器的架构是http://msdn.microsoft.com/en-us/library/aa741312(vs . 85 . aspx)

ShDocVw及以下是WebBrowser的内容,而浏览器UI和IE的一些独特功能并不归WebBrowser所有。当然,这并不意味着我们必须使用网络浏览器来成为我们自己的基于IE的浏览器。我们可以用MSHTML直接控制绘制DOM,跳过WebBrowser。

那么可以修改它绑定的内核吗?

这没问题:

IE8在渲染引擎上做了很大的改动,增加了新的标准模式。很多软件都嵌入了IE的网页浏览器控件(也就是MSHTML.dll)来显示网页。当用户的机器升级到IE8时,网络浏览器控件也将升级到IE8的渲染引擎。

为了保证这些使用WebBrowser控件的应用程序能够像以前一样工作,IE8的WebBrowser控件默认使用IE7的渲染模式(即IE8中的兼容视图模式)。

方法一

添加你想编程的IE8的标准模式为WebBrowser控件的渲染模式,可以通过设置注册表FEATURE _ BROWSER _ ATTION来实现。

示例:

指明注册表中当前安装的工业工程版本

HKEY _ LOCAL _ MACHINE SOFTWARE Microsoft Internet Explorer

下面有个项目叫Version,它的值就是IE的版本。

svcVersion =10.0.9200.16618

版本=9.10.9200.16618

HKEY _当前_用户或HKEY _本地_机器)软件微软互联网浏览器主功能控制功能_浏览器_仿真]

" MyApplication.exe" = dword 8000(十六进制:0x1F40)

这里,MyApplicaiton.EXE是你的应用程序的exe文件名。8000表示8.0的渲染模式,请参考下表:

IE8标准模式8000 (0x1f40)-IE8标准模式,IE8默认模式

IE7标准模式7000 (0x1B58)-IE7兼容视图模式,IE8网络浏览器控件的默认模式

Ie8标准模式(强制)8888 (0x22b8)-IE8强制标准模式,渲染失败时不尝试使用兼容视图模式。

方法2

标记html标题以强制显示最新的ie

使用最新的ie8强制渲染

修改案例:

void WIAPI WriteWebbrowserRegKey(LPCTSTR LPKey,DWORD dwValue)

{

HKEY港;

CString str = " Software Microsoft Internet Explorer Main FeatureControl ";

str+= LPKey;

if(RegCreateKey(HKEY _ LOCAL _ MAChine,str & amp;香港)!=0)

{

消息框(空,“打开注册表失败!”,“错误”,0);

exit process(-1);

}

If (RegSetValueEx(hk)"您的exe名称。exe ",null,reg _ dword,(constbyte *)&: dwValue,4)!=0)

{

RegCloseKey(香港);

消息框(空,“写注册表失败!”,“错误”,0);

exit process(-1);

}

RegCloseKey(香港);

}

writeWebbrowserRegKey(" FEATURE _ BROWSER _ ATTION ",9000);

//WriteWebbrowserRegKey(" FEATURE _ ACTIVEX _购回保护",1);

WriteWebBrowserRegKey(" FEATURE _ BLOCK _ LMZ _ IMG ",1);

WriteWebBrowserRegKey(" FEATURE _ BLOCK _ LMZ _ OBJECT ",1);

WriteWebBrowserRegKey(" FEATURE _ BLOCK _ LMZ _ ",1);

WriteWebBrowserRegKey(" FEATURE _ Cross _ Domain _ Redirect _ removation ",1);

WriteWebBrowserRegKey(" FEATURE _ ENABLE _ PASTE _ URL action _ IF _ PROMPT ",1);

WriteWebBrowserRegKey(" FEATURE _ local machine _ locked ",1);

WriteWebBrowserRegKey(" FEATURE _ GPU _ RENDING ",1);

参考资料

现在去仔细查看权威信息,验证两个问题:

1.1之间有什么关系。Webbrowser和IE?是否使用ie内核,是否与360安全浏览器、Maxthon浏览器、腾讯TT等IE内核浏览器本质相同。

2.做2。Webbrowser使用兼容的浏览模式,这种模式可以改变吗?

二.查询结果

1.webbrowser调用原生IE9,webbrowser默认以IE7模式运行,除非你更改。

找到一篇msdn帖子,明确表示webbrowser调用原生IE9,webbrowser默认运行在IE7模式,除非你改。

如何让c# WebBrowser等价于IE浏览器

http://social . msdn . Microsoft . com/Forums/en/winforms/thread/2ed 65 b9d-c601-4c A8-bde 1-64584 fc 87515

挑几个字:

哇,第一篇没有任何来源支持的大胆声明的帖子。如果你想使用网络浏览器控件,你可能应该阅读工业工程软件开发工具包(如果你想使用网络浏览器控件,你需要阅读的手册)或者浏览工业工程编程论坛(这是其他人在工业工程编程中经常去的地方)。

Webbrowser是IE APIs的包装器。不存在同一台电脑上共存多个版本的IE。您将始终从网络浏览器控件获得安装在计算机上的唯一版本的IE。

默认IE和网络浏览器之间有很多很多的设置差异。基本上,您不必选择退出网络浏览器中可能会破坏您的应用程序的新功能(Visual Studio团队在这里吸取了一个惨痛的教训,当IE8破坏了Visual Studio的向导时),您必须编写代码来选择加入,除非改进与安全性相关。这意味着网络浏览器将在IE7模式下运行,除非您在功能控制中更改模式。

注意一些网站声明他们对IE7或IE8模式的需求。强制IE9模式可能并不明智。

2.微软新闻组的一篇帖子,没有IE的Webbrowser Control,明确提到没有IE就不能使用Webbrowser。

http://groups . Google . com/group/Microsoft . public . VB . controls/browse _ thread/thread/7575 BD 25 e 0730 DD/aa 40 F3 DFC 799407d?lnk=gst&。q = WebBrowser+ie # aa 40 F3 DFC 799407d

IE必须安装在机器上,您才能使用网络浏览器控制。

必须安装Internet Explorer才能使用网络浏览器控件。根本没有如果、和或但是。如果没有安装IE,你怎么能指望使用IE功能?

3.如何设置WebBrowser在IE9模式下工作?

回答:需要修改注册表。具体看下面的4、5、6,尤其是6,最全面。

4.使用IE7代替IE9的WPF网络浏览器控件

http://social . msdn . Microsoft . com/Forums/en-US/view ebdevelopment/thread/4431908 e-1869-4435-bcea-a3ec 0820 edfb

摘录几句:

我如何使WPF网络浏览器控件使用IE9而不是IE7作为浏览器引擎?

我有一些在网络浏览器控件和IE9浏览器中呈现不同的HTML。当我在网络浏览器中运行下面的java时,结果是“7”。如IE7。

我找到了Rick Strahl的一篇文章,它描述了将使网络浏览器使用IE9的注册表设置。但我想避免这种情况。我很想知道IE7是如何被使用的。

回答:您想避免为网络浏览器主机设置文档兼容模式的唯一记录方式吗?为什么?

5.WebBrowser和CSS3?

http://social . msdn . Microsoft . com/Forums/en-AU/winforms/thread/1b 656 af 7-BDA 9-47d 9-8f 9a-1d 886d 3688 ca

默认情况下,Web浏览器控件以兼容模式运行,除非您设置了功能浏览器仿真注册表项。IE9能够正确识别CSS3,而浏览器控件不能,这一事实似乎表明浏览器控件没有在IE9标准模式下运行。

您将需要设置此链接中描述的浏览器仿真功能密钥(FEATURE _ BROWSER _ ATTION)。

您可以使用9000值,除非您想对所有页面强制IE 9标准模式。以防以后,需要用9999。

浩方对战平台

如果使用hklm和64位机器,您需要检查的是Wow6432Node节点是否需要更改。

最后,您需要在注册表项中添加托管浏览器控件的进程名作为值名。

Windows注册表编辑器5.00版

[HKEY _ LOCAL _ MACHINE SOFTWARE wow 6432 node Microsoft Internet Explorer MAIN FEATURE control FEATURE _ BROWSER _仿真]

" prevhost.exe"=dword:00001f40

" sllauncher.exe"=dword:00001f40

" windowsformsappression 1 . exe " = dword:0000270 f

6.网络浏览器控制–指定工业工程版本

http://www . west-wind . com/weblog/post/2011/May/21/Web-Browser-Control-specification-the-IE-Version

我在许多应用程序中使用浏览器控件来显示文档类型布局。超文本标记语言碰巧是最常见的文档格式之一,以这种格式显示数据——即使在桌面应用程序中,也比使用普通的桌面技术容易得多。

网络浏览器控件的一个问题是,默认情况下,它永远停留在IE 7渲染模式下。尽管IE 8和现在的IE9已经大大提高了IE8渲染引擎的性能,默认情况下更符合CSS和HTML,但网络浏览器控件将没有这些功能。尤其是IE 9,它改进了CSS支持和基本的HTML 5支持,这是一个很大的改进,尽管IE9控件使用了一些IE9的内部渲染技术,但默认情况下,它仍然停留在旧的IE 7渲染中。

无论你是在WPF应用程序、WinForms应用程序、FoxPro还是使用ActiveX控件的VB经典应用程序中使用网络浏览器控件,这都适用。在幕后,所有这些用户界面平台都使用组件接口,所以你被同样的规则所束缚。

通过注册表黑客进行功能委托

幸运的是,从互联网探索8开始,后来通过注册表设置解决了这个问题。您可以指定一个注册表项来指定该应用程序应该使用的渲染模式和IE版本。请注意,这些不是全局设置,它们必须针对每个应用程序单独启用。

32位和64位应用程序有两组不同的密钥。

32位:

HKEY _ LOCAL _ MACHINE SOFTWARE Microsoft Internet Explorer MAIN FEATURE control FEATURE _ BROWSER _仿真

价值关键:yourapplication.exe

64位:

HKEY _ LOCAL _ MACHINE SOFTWARE wow 6432 node Microsoft Internet Explorer MAIN FEATURE control FEATURE _ BROWSER _仿真

价值关键:yourapplication.exe

将该键设置为的值是(此处取自MSDN)十进制值:

9999 (0x270F)

Internet Explorer 9。网页以IE9标准模式显示,不考虑!DOCTYPE指令。

9000 (0x2328)

Internet Explorer 9。包含基于标准的网页!DOCTYPE指令以IE9模式显示。

8888 (0x22B8)

网页以IE8标准模式显示,不考虑!DOCTYPE指令。

8000 (0x1F40)

包含基于标准的网页!DOCTYPE指令以IE8模式显示。

7000 (0x1B58)

包含基于标准的网页!DOCTYPE指令以IE7标准模式显示。

来源:http://www . cn blogs . com/sung/p/3391264 . html

1.《webbrowser 修改WebBrowser控件的内核解决方案》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《webbrowser 修改WebBrowser控件的内核解决方案》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/819164.html

上一篇

2016加盟什么挣钱 2016中国特许百强出炉 新增加盟网点2万余个

下一篇

农安县活埋女婴事件 警方对活埋婴儿事件立案调查,爷爷以为他死了,2个月后才现身

宛平城下 任重跨界写作,《宛平城下》等25部优秀网络文学原创作品获推介

宛平城下 任重跨界写作,《宛平城下》等25部优秀网络文学原创作品获推介

昨天,由国家新闻出版署和中国作家协会联合举办的“庆祝新中国成立70周年”启动仪式暨2019年优秀网络文学原创作品推广活动在北京举行。介绍了《不归之河》《花儿》《献给青春我们将死去》《威武》《宛平古城》《国传》等25部作品。“网络文学优秀原创作品年度推广活动”于201...

阿里巴巴拍卖 网络拍卖是下一个电商大市场 阿里做了何种布局?

阿里巴巴拍卖 网络拍卖是下一个电商大市场 阿里做了何种布局?

中国电商最高单价纪录是多少?也许大多数人会给出几百万的答案,但实际上是阿里巴巴拍卖平台去年创造的25亿元——某游艇俱乐部债权资产的成交价格。近日,“拍卖”悄然在手机淘宝首页占据显要位置,享受着与天猫、聚划算等战略板块相同的“待遇”。如果说顶级手机淘宝的“拍卖”是为了...

哈尔滨万达广场 万达进入疯狂模式 2座万达茂8个万达广场将开

  • 哈尔滨万达广场 万达进入疯狂模式 2座万达茂8个万达广场将开
  • 哈尔滨万达广场 万达进入疯狂模式 2座万达茂8个万达广场将开
  • 哈尔滨万达广场 万达进入疯狂模式 2座万达茂8个万达广场将开

虐袭3 启示:为何传统快消品模式都养活不了三只松鼠

  • 虐袭3 启示:为何传统快消品模式都养活不了三只松鼠
  • 虐袭3 启示:为何传统快消品模式都养活不了三只松鼠
  • 虐袭3 启示:为何传统快消品模式都养活不了三只松鼠

港乱 起底祸港乱港暴力活动的“急先锋”,日薪制分钱模式,现场有指挥

  • 港乱 起底祸港乱港暴力活动的“急先锋”,日薪制分钱模式,现场有指挥
  • 港乱 起底祸港乱港暴力活动的“急先锋”,日薪制分钱模式,现场有指挥
  • 港乱 起底祸港乱港暴力活动的“急先锋”,日薪制分钱模式,现场有指挥
火爆探索网 新式茶饮火爆幕后:盈利模式的探索成为新难题

火爆探索网 新式茶饮火爆幕后:盈利模式的探索成为新难题

新茶的“网络名人级”现象还在发酵,这个新事物似乎已经突破了品类认知,进入了大众的视野。然而新茶的流行背后,有人欢喜有人愁。如何创建新的盈利模式?新赛道的赛点在哪里?如何建立核心壁垒?今天,我们来梳理一下。这个蓬勃发展的行业的下一个强项是什么?回顾行业:新茶的出路似乎...

网络摄像 网络摄像机监控系统安装图解!

  • 网络摄像 网络摄像机监控系统安装图解!
  • 网络摄像 网络摄像机监控系统安装图解!
  • 网络摄像 网络摄像机监控系统安装图解!
创意市集 注重新奇特 创意市集成为购物中心新的营销模式

创意市集 注重新奇特 创意市集成为购物中心新的营销模式

在近年来零售百货店的发展中,同质化一直是行业的一大痛点,缺乏全面的业态往往困扰其发展。在转型和创新尤为重要的今天,购物中心推出了餐饮、娱乐等各种体验式业态,其中创意市场经常受到购物中心的青睐。业内人士认为,随着生活水平的提高,今天的“集市”已经成为一种文化交流形式,...