VB.net中应用CefSharp.WinForms库构建Chrome核心浏览器的方法

在VB.net系列的项目开发中,往往需要使用到内嵌浏览器。一般来说,使用VB.net自带的WebBrowser控件能够满足大部分的要求。但是WebBrowser控件是基于IE浏览器内核,显然对HTML5、JavaScript等的支持体验较差,不能满足某些特殊的需求,如果要在VB.net项目中嵌入其它内核的浏览器该怎么做呢?

网上有一些基于C#的开源项目,可以方便的在C#编译环境下用于开发WinForm或WPF的应用程序,其实这些开源项目经过正确配置也可以用于VB.net项目开发应用程序。例如WebKit.Net,相当于Chrome浏览器的早期内核,使用方便,配置简单,缺点是已经很久没有更新,对较新的HTML5支持不好;还有Geckofx,基于FireFox的浏览器核心,对Html5的支持较好,但是配置较为繁琐,初学者很难在VB.net中安装成功;再如CefSharp,同WebKit.Net一样也是基于Chrome浏览器的内核,而且更新迅速,最新版本号为67,基本接近最新版Chrome浏览器的使用效果。但是CefSharp的最大缺点是它不提供WinForm可用的控件,网上可查到的也基本是C#环境的使用方法,完全没有在VB.net中进行配置的中文说明。即便是可查到的英文资料,也只有部分代码,没有完整的说明可参考。

为此,在查阅了大量的英文资料之后,我进行了多次尝试,终于将VB.net中如何应用CefSharp的方法搞明白。今天将其写成教程,方便广大VB.net拥趸使用CefSharp构建基于Chrome核心的浏览器应用,并且可以举一反三,将网上大量的C#开源项目应用到VB.net中来,以此证明VB.net并没有过时。

 

以下内容均基于Visual Studio 2015、.Net FrameWork(4.52及以上),测试系统为Windows 10,也可以在Windows 7、Windows 8.1中复现,运行环境则需要有与开发版本对应的.Net FrameWork 以及VC++ Runtime(x86/x64)。

 

1. 安装NuGet

访问https://www.nuget.org/downloads或直接从CSDN下载

下载与Visual Studio 2015对应的NuGet安装程序,最新版本为3.6.0,该页面也提供其它版本的Nuget供选用。

下载后双击运行NuGet.Tools.vsix,安装过程由于太过简单不再赘述,安装后最好重启一下Visual Studio。

NuGet当然也可以在Visual Studio平台中直接下载安装,具体方法请自行百度。

正确安装NuGet之后,在Visual Studio平台的工具菜单中会多出一个名为“NuGet程序包管理器”的东东,暂且放下,之后我们要用它来安装CefSharp。

 

2. 下载CefSharp

可以在NuGet中安装的组件大部分都可以在NuGet网站或者管理器中找到,这里主要介绍离线下载安装的方法。

访问https://www.nuget.org/packages/CefSharp.WinForms/或直接从CSDN下载

下载CefSharp的最新版本67.0.0-pre01,也可以下载正式版本65.0.1。

 

3. 离线安装CefSharp

打开Visual Studio2015,新建一个VB.net的WinForm项目。

选择菜单中的工具→NuGet程序包管理器→程序包管理器设置。

在左侧折叠菜单中选择NuGet包管理器→程序包源。

点击右上角绿色“+”按钮,增加一个本地程序包源,在下方输入名称,找到“更新”按钮左侧的“…”按钮并点击它(是的,有点小),浏览到你保存CefSharp的本地文件夹,然后点击“更新”,再点击“确定”。

接着,选择菜单中的NuGet程序包管理器→程序包管理控制台。

在控制台中输入(前述CefSharp下载页面中也可以直接复制到)以下命令并回车执行安装命令:

Install-Package CefSharp.WinForms -Version 67.0.0-pre01
注意最后版本号必须和下载CefSharp版本号一致。

直到安装完成,应该很快。

正常情况下,CefSharp安装完成后可在右侧解决方案资源管理器窗口的“引用”中看到名为CefSharp、CefSharp.Core、CefSharp.WinForms的三个引用,如果没有看到或者缺少一个,可以手动引用这三个DLL文件,这些文件会保存在项目文件夹中的Packages中,您可以自行搜索。

保存一下项目,将Packages文件夹中的CefSharp.Common.67.0.0-pre01\CefSharp\x86(或x64)文件夹复制一份到项目文件夹中的bin文件夹之下。

 

4. 配置CefSharp

用任意文本编辑器打开项目bin文件夹中的yourname.vbproj文件,yourname是指项目的名称,别跟我说你找不到。

打开后在第一个<PropertyGroup>的节点内添加一行,内容为:

<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
保存并关闭该文件。

同样打开bin文件夹中的app.config文件,在<config>节点内添加如下内容:

<runtime>
<assemblyBinding xmlns=”urn:schemas-microsoft-com:asm.v1″>
<probing privatePath=”x86″/>
</assemblyBinding>
</runtime>
保存并关闭该文件,至此CefSharp配置完成。

 

5. 配置应用程序

VB.net应用程序的默认配置是支持任何CPU(AnyCPU),但是CefSharp不支持这种方式,因此在使用CefSharp之前,还需要对应用程序的属性进行一些修改。

打开项目菜单→yourname项目属性。将应用程序标签中的.Net FrameWork的版本修改为4.52。

切换到编译标签,将目标CPU设置为x64或者x86其中之一,这里以选择x86为例,Crtl+s保存配置,完成,准备开工。

 

6. 创建CefSharp浏览器窗口实例

前面说过CefSharp的缺点是没有提供WinForm中可用的控件,因此不能像WebBrowser控件一样直接在Form上画出浏览器窗口,只能通过“曲线救国”的方式来进行。

这里要用到一个Panel控件,Panel控件是一个容器,常被用作控件分组,例如可以实现把不同类型的控件放置在一个Panel容器中,也可以通过写代码的方式实时增加控件(例如增加一个按钮或增加一个文本框)。这个特性可以被我们利用来实时创建一个CefSharp控件。

在Form1窗体上画一个Panel控件,命名为MyBrowser,将Dock属性设置为Fill,我们将利用这个控件实现CefSharp的第一步,制作一个最简单的浏览器,打开一个指定的网页,这里我们以百度为例。

切换到Form1代码标签,输入以下代码:

Imports CefSharp.WinForms
Imports CefSharp

Public Class Form1
Private WithEvents browser As ChromiumWebBrowser
Public Sub New()
InitializeComponent()
Dim settings As New CefSettings()
settings.BrowserSubprocessPath = “x86\CefSharp.BrowserSubprocess.exe”
CefSharp.Cef.Initialize(settings)
browser = New ChromiumWebBrowser(“http://www.baidu.com”) With {
.Dock = DockStyle.Fill
}
MyBrowser.Controls.Add(browser)
End Sub
End Class

按F5运行调试,成功打开百度首页。

更换百度网址为浏览器内核检测网址,结果如图:

点此下载本例项目工程文件源代码压缩包
7. 结束语

习惯使用C#的用户可能会发现,本教程中大部分的操作方式和C#环境中运用CefSharp的方法是一模一样的。因此在本例中,第6步中VB.net代码正确书写才是真正的重点。一个最简单的例子实现了CefSharp.WinForms在VB.net中的运用。当然,在CefSharp中还有很多特性和功能,我将在以后的日子里为大家介绍,如果有时间的话。
———————
作者:zhejiong
来源:CSDN
原文:https://blog.csdn.net/zhejiong/article/details/82056127
版权声明:本文为博主原创文章,转载请附上博文链接!

未经允许不得转载:A66网 » VB.net中应用CefSharp.WinForms库构建Chrome核心浏览器的方法

赞 (0)
分享到:更多 ()

评论 0