65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 CEFSharp 在 WPF VB.NET 应用程序中嵌入 Chrome

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (10投票s)

2013年9月5日

CPOL

3分钟阅读

viewsIcon

129146

使用 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

  1. 让我们打开 Visual Studio 并启动一个新的 .NET 4.5 WPF 应用程序

  2. 创建后,保存项目以便我们开始添加一些文件。
  3. 现在我们需要从 https://github.com/cefsharp/CefSharp 下载并提取文件。

    CEFSharp 最近已升级为支持 .NET 4.0,因此请确保您下载的是 CEFSharp 1.25.4 而不是仅支持 .NET 2.0 的版本 1.25.0。
  4. 在 Visual Studio 中,右键单击解决方案资源管理器中的项目,然后选择“添加引用”。


    浏览到提取的 *CEFSharp* 文件夹,并在 *Release* 文件夹中引用 *CefSharp.Wpf.dll* 和 *CefSharp.dll*。

  5. 我们还需要将 *icudt.dll* 和 *libcef.dll* 从 *CEFSharp* 文件夹复制到我们的 *Debug* 文件夹。
  6. 在您的 *MainWindow.xaml* 中,为您的网格指定一个名称
  7. <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>   
  8. 右键单击并选择“查看代码”,并在 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 属性,我们可以让它浏览到一个网站。

如果您现在尝试运行您的应用程序,您可能会收到以下错误

这是因为应用程序仅为 32 位。我们需要再次右键单击解决方案资源管理器中的应用程序,并将目标 CPU 设置为 x86。

现在应该可以工作了!

© . All rights reserved.