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下载
 
NuGet\Install-Package CefSharp.WinForms -Version 104.4.240
 
         下载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中还有很多特性和功能,我将在以后的日子里为大家介绍,如果有时间的话。
 

 



[本日志由 admin 于 2023-01-19 08:18 PM 更新]
上一篇: varnish的安装使用
下一篇: VB.net连接mysql数据库
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: vb.net
相关日志:
评论: 0 | 引用: 0 | 查看次数: 734
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑