VB.net webbrowser如何使用IE11内核?IE7内核很多网站不支持!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB.net webbrowser如何使用IE11内核?IE7内核很多网站不支持!相关的知识,希望对你有一定的参考价值。
VB.net webbrowser如何使用IE11内核?IE7内核很多网站不支持!VB.net webbrowser如何使用IE11内核?(用的是Windows10系统,自带IE11),IE7内核很多网站不支持!
首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用。我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用 (ReUse)webbrowser control的应用程序,可以是vb程序,也可以是vc或者任何其他语言的应用程序。应用程序必须是可容纳activex控件的容器。Webbrowser control既是activex control也是activex document 的宿主。作为控件,它可以置于任何activex容器,作为文档容器,它针对特殊的类型,调用特殊类型注册的文档server以显示文档。如果你想显示一 个.doc文档,webbrowser control装载windows word,,对于html文档,webbrowser装载名为mshtml的组件(如图所示)。针对不同的文档,你不需要开发不同的应用,仅仅是调用 webbrowser control即可。
Shdocvw
Shdocvw.dll包含了webbrowser control ,控制webbrowser control (就像控制其他任何activex com 控件一样),提供浏览能力给上层宿主。请注意webbrowser control位于第二级中。甚至IE也不直接而是通过shdocw.dll来使用webbrowser control的。尽管shdocvw提供了大部分的浏览功能,但是并不提供IE窗口的呈现功能。尽管如此,shdocvw还是提供了简单创建web 应用程序的能力。之后章节会讲到如何将ie的高级特性加入到你的应用程序。
MSHTML
早期的mshtml具有读取显示html的功能。MSHTML实际上是一个active 文档服务器,但是却可以作为其他控件的容器(如图中所示的)。记得吗,你可以将activex控件置于html中,此时mshtml就是一个 activex宿主,还可以控制其他的控件如vbscript 脚本引擎和javas 参考技术A webbrowser 是ieframe.dll 提供并封装好内核的, 版本和 ieframe.dll的版本一致, 和 IE 会有差别的,比如一些网页是打不开的,一些网游用IE 正常webbrowser 是不正常的
因为VB一般说是6.0的版本,并已经不再更新(现在都是支持.net框架了,所以 要想同步版本只有用 vb.net编程 了,而net说实话和 VB6来说根本不算VB 语言了
所以你可以考虑直接调用IE 对象 ,并设置父窗口为你的程序(默认是桌面的) 参考技术B 日语$
winform webbrowser如何强制使用ie11内核?
webkit.net ,cefsharp,openwebkit.net等这些基于谷歌或者基于firfox内核的浏览器有个共同点,就是必须指定winform为x86的才能使用,
而且使用过程中也是各种坑需要去填。
webbrowser不好的地方是默认使用ie5内核来加载网页,不得不吐槽下微软真是奇葩,ie已经退出了历史舞台,但是winform里面的webbrowser控件使用的还是ie内核,
项目有个需求是,winform程序,必须是x64的,x86经常内存溢出,于是,那些基于谷歌内核的都被pass掉了。
winform里面嵌套的网站之前都是基于谷歌内核来开发的,在ie11里面虽然还有一些小瑕疵,但是毕竟可以使用,
于是考虑如何让winform x64调用IE11的内核。
代码如下:
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true);
if (key != null)
{
key.SetValue("XXX.exe", 11001, RegistryValueKind.DWord);
key.SetValue("XXX.vshost.exe", 11001, RegistryValueKind.DWord);//调试运行需要加上,否则不起作用
}
key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true);
if (key != null)
{
key.SetValue("XXX.exe", 11001, RegistryValueKind.DWord);
key.SetValue("XXX.vshost.exe", 11001, RegistryValueKind.DWord);//调试运行需要加上,否则不起作用
}
IE各版本的值如下:
-
11001 (0x2EDF) Internet Explorer 11. Webpages are displayed in IE11 Standards mode, regardless of the !DOCTYPE directive
-
11000 (0x2AF8) :Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode
-
10000 (0x2710) :Internet Explorer 10. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
-
10001 (0x2AF7) :Internet Explorer 10. Webpages are displayed in IE10 Standards mode, regardless of the !DOCTYPE directive.
-
9999 (0x270F) :Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.
-
9000 (0x2328) :Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
-
8888 (0x22B8) :Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.
-
8000 (0x1F40) :Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.
-
7000 (0x1B58) :Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.
以上是关于VB.net webbrowser如何使用IE11内核?IE7内核很多网站不支持!的主要内容,如果未能解决你的问题,请参考以下文章
winform webbrowser如何强制使用ie11内核?
用Webbrowser怎么实现获取网页内容并自动点击?(VB.NET)
VB.NET WebBrowser 控件 OnClick 事件未触发
C# winform webbrowser如何指定内核为IE11?