使用 CEFSharp 在 WPF VB.NET 应用程序中嵌入 Chrome
使用 CEFSharp 在 WPF VB.NET 应用程序中嵌入 Chrome
引言
本技巧演示了如何使用 CEFSharp 将 Chrome 嵌入到使用 VB.NET 的 WPF 应用程序中。
背景
如果您使用过 Visual Studio 中内置的 Web 浏览器,您可能会注意到一些问题
- IE 的版本不会传递到运行应用程序的系统。如果您在安装了 IE10 的系统上运行它,您将获得 IE10。如果您在安装了 IE8 的系统上运行它,您将获得 IE8。
- 即使您安装了 IE8,您的网站也很有可能会呈现为 IE7,除非您有一个元标记强制 IE 呈现为 IE8。
- 如果您想使用 IE 上不可用的某些 HTML 或 CSS 功能,那么您又会遇到问题。
幸运的是,还有其他替代方案。
Firefox
- Geckofx - 它与 Windows Forms 配合良好;但是,目前没有 WPF 实现。希望当版本 26 发布并获得其新的 Metro 外观时,这种情况会改变。请务必访问 BitBucket 网站,这是新的主页,而不是过时的 googlecode 网站。
Chrome
- Awesomium - 这支持在 WPF 中使用 Chrome,但看起来它仍然使用 Chrome 的版本 18 - 当前 Chrome 版本是 29
- CEFSharp - 这支持在 WPF 中使用 Chrome(版本 25),但目前只有 CEF1 版本,它是单线程的。但是,看起来现在有一个 CEF3(多线程)实现的 alpha 版本。
- Xilium - 我还没有尝试过这个,但它似乎支持许多操作系统,并且有一个 CEF3 版本。如果我尝试了,我一定会再写一篇文章。
我花了一段时间才让它工作,所以我想把一些东西放在一起,这可能会帮助其他人更快地入门。CEFSharp googlegroup 非常有帮助。目前,没有 Nuget 或 PM 项目文件。
Using the Code
- 让我们打开 Visual Studio 并启动一个新的 .NET 4.5 WPF 应用程序
- 创建后,保存项目以便我们开始添加一些文件。
- 现在我们需要从 https://github.com/cefsharp/CefSharp 下载并提取文件。
CEFSharp 最近已升级为支持 .NET 4.0,因此请确保您下载的是 CEFSharp 1.25.4 而不是仅支持 .NET 2.0 的版本 1.25.0。 - 在 Visual Studio 中,右键单击解决方案资源管理器中的项目,然后选择“添加引用”。
浏览到提取的 *CEFSharp* 文件夹,并在 *Release* 文件夹中引用 *CefSharp.Wpf.dll* 和 *CefSharp.dll*。 - 我们还需要将 *icudt.dll* 和 *libcef.dll* 从 *CEFSharp* 文件夹复制到我们的 *Debug* 文件夹。
- 在您的 *MainWindow.xaml* 中,为您的网格指定一个名称
- 右键单击并选择“查看代码”,并在
MainWindow
VB 中添加以下内容Imports CefSharp Class MainWindow Public Sub New() ' This call is required by the designer. InitializeComponent() ' Add any initialization after the InitializeComponent() call. Dim settings As New CefSharp.Settings() settings.PackLoadingDisabled = True If CEF.Initialize(settings) Then Dim web_view As New CefSharp.Wpf.WebView grid1.Children.Add(web_view) web_view.Address = "http://www.google.com/" End If End Sub End Class
在调用
initializecomponent
(它构建 XAML 控件)之后,我们创建并初始化 Chrome 设置。完成后,我们可以创建我们的 Web 浏览器并将其添加到网格中。使用Address
属性,我们可以让它浏览到一个网站。
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid Name="grid1">
</Grid>
</Window>
如果您现在尝试运行您的应用程序,您可能会收到以下错误
这是因为应用程序仅为 32 位。我们需要再次右键单击解决方案资源管理器中的应用程序,并将目标 CPU 设置为 x86。
现在应该可以工作了!