EO.WebBrowser,Chrome浏览器内核,可以在WinForm中嵌入Chrome浏览器,详情可以浏览官方网站。
备注:EO.WebBrowser是付费的解决方案,而且只接受美元付款。
为什么用EO.WebBrowser?
VS内置的WebBrowser默认是IE7模式,很多H5功能无法正常使用,兼容性太差了。
EO.WebBrowser -—Embed Chrome Browser Engine in your .NET applicationhttp://www.essentialobjects.com
官方网站www.essentialobjects.com/Products/WebBrowser/Default.aspx
【1】安装了EO.WebBrowser之后,会在VS的工具栏出现工具菜单
【2】【3】将WebControl拖动到WinFrom上,会在窗口上自动增加一个浏览器控件。
要让想让他正常显示网页,需要加几行代码
首先必须加载AddLicense,然后指定网址,然后启动程序即可。
实际上,可以不用显示网页窗口就可以操作网页,例如可以不用显示网页窗口,就可以把网页截图。
在Load里这样写:
Dim threadRunner As New ThreadRunner()
Dim webView As WebView = threadRunner.CreateWebView()
threadRunner.Send(Function()
webView.LoadUrlAndWait("http://www.baidu.com")
webView.Capture().Save(“C:\00.JPG”)
End Function)
不需要拖放控件到WinForm,只需要引用EO.base即可。在EO.Webbrowser安装目录下可以找到对应的dll。
在网页上执行javascript
webView1.EvalScript("alert('hi');")
引号内即网页上要执行的javascript脚本,可以通过拼合变量传参,理论上可以执行任何的javascript语句。
如果要获得返回值,直接Dim str as string = webView1.EvalScript("XXX;")即可
在javascript程序中调用.NET程序
这个要复杂一些,举个例子,首先在.net程序中注册demoAbout函数,
webView1.RegisterJSExtensionFunction("demoAbout", New JSExtInvokeHandler(WebView_JSDemoAbout))
在javascript脚本中,我们这么调用demoAbout,要求返回版本号和url,
demoAbout(window.navigator.appVersion, document.URL);
在.net我们需要定义如何获取返回的参数
Private Sub WebView_JSDemoAbout(sender As Object, e As JSExtInvokeArgs)
‘得到第一个返回的参数
Dim browserEngine As String = TryCast(e.Arguments(0), String)
‘得到第二个返回的参数
Dim url As String = TryCast(e.Arguments(1), String)
MessageBox.Show("Browser Engine: " & browserEngine & ", Url:" & url)
End Sub