AI摘要

WebView4Delphi是一个开源项目,用于将基于Edge/Chromium的浏览器嵌入使用Delphi或Lazarus/FPC为Windows制作的应用程序中。它使用Microsoft Edge WebView2 Runtime和Microsoft.Web.WebView2 NuGet包将Web浏览器嵌入到VCL、FMX和LCL应用程序中。WebView4Delphi是TWebBrowser和TEdgeBrowser组件的替代品,是WebView2框架的完整实现,经常更新,并且还支持旧版本的Delphi。

WebView4Delphi

描述

WebView4Delphi 是一个开源项目,由Salvador Díaz Fau创建,用于将基于 Edge/Chromium 的浏览器嵌入使用 Delphi 或 Lazarus/FPC 为 Windows 制作的应用程序中。

WebView4Delphi 是 TWebBrowser 和 TEdgeBrowser 组件的替代品。它是 WebView2 框架的完整实现,经常更新,并且还支持旧版本的 Delphi。

介绍

WebView4Delphi 使用Microsoft Edge WebView2 RuntimeMicrosoft.Web.WebView2 NuGet 包将 Web 浏览器嵌入到 VCL、FMX 和 LCL 应用程序中。

WebView4Delphi 加载 NuGet 包中的 WebView2Loader.dll 库并实现 WebView2 文档中描述的所有接口。

最新的 WebView4Delphi 版本使用 Microsoft.Web.WebView2 NuGet 包版本 1.0.3485.44。您可以自行下载以提取 WebView2Loader.dll 库,或使用存储库 bin32 和 bin64 目录中提供的副本。

下图描述了 WebView4Delphi 的工作原理:

WebView4Delphi工作原理图

链接

WebView4Delphi项目:

Microsoft Edge WebView2 运行时:

Microsoft.Web.WebView2 NuGet 包:

Chromium项目:

兼容性

Microsoft Edge WebView2 Runtime 创建了一个基于 Chromium 的 Web 浏览器,需要 Windows 10、11 或更新版本才能运行。

微软曾计划支持 MacOS 和 Linux,但他们决定停止这些计划。WebView2 仅适用于 Windows。

如果您需要在 MacOS、Linux 和 Windows 中嵌入 Web 浏览器,请考虑使用CEF4Delphi

关于 WebView2 运行时

WebView2 运行时可以安装在运行嵌入式浏览器的每台计算机上。这称为常绿版本,由 Windows 更新自动更新。

或者,您可以部署 WebView2 运行时的固定版本,并在每次更新应用程序时手动更新它。

常绿版本允许您为您的应用程序安装一个小型安装程序,并且 Windows 将使用最新的安全补丁更新 WebView2 运行时。

嵌入式 Web 浏览器也将自动更新,这意味着您的应用程序应该定期进行测试,以防止因弃用的浏览器功能、内部浏览器问题等引起的问题。

您还必须记住,并非所有计算机都会同时更新。一些企业用户可能会很晚才收到某些 Windows 更新,因此您的应用程序必须准备好与多个浏览器版本完美兼容。

为了避免所有这些问题,您也可以使用 WebView2 Runtime 的固定版本,但随后您必须手动更新它以修补浏览器中的安全问题,并且安装程序会更大。

Windows 11 和大多数 Windows 10 设备中已包含 Microsoft Edge WebView2 运行时的常绿版本。所有演示均配置为使用常绿版本。

安装

要在 Delphi XE2、XE3、XE4、XE6、XE7、XE8、10、11、12 或 13 中构建和安装 WebView4Delphi,您需要遵循以下步骤:

  1. 从GitHub下载最新版本的 WebView4Delphi 。
  2. 将 WebView4Delphi 解压到一个目录中,并确保您的用户在该目录中具有写权限。
  3. 运行 Delphi。
  4. 打开文件​packages\WebView4Delphi_group.groupproj​。
  5. 如果要安装 FMX 和 VCL 组件,请选择​“项目”→“构建所有项目”​菜单选项。如果此选项失败,请分别构建 WebView4DelphiVCLRTL.bpl、WebView4DelphiFMXRTL.bpl、WebView4DelphiVCL_designtime.bpl 和 WebView4DelphiFMX_designtime.bpl(按此顺序)。构建过程结束后,请在 WebView4DelphiVCL_designtime.bpl 和 WebView4DelphiFMX_designtime.bpl 中选择“安装”上下文菜单选项。
  6. 如果您只想安装 VCL 组件,那么构建 WebView4DelphiVCLRTL.bpl 并安装 WebView4DelphiVCL_designtime.bpl。

要在 Delphi 6、7、8、2005、2006、2007、2009、2010 或 XE 中编译和安装 WebView4Delphi,您需要遵循以下步骤:

  1. 从GitHub下载最新版本的 WebView4Delphi 。
  2. 将 WebView4Delphi 解压到一个目录中,并确保您的用户在该目录中具有写权限。
  3. 运行 Delphi。
  4. 从具有 VCL 组件的 Delphi打开文件WebView4Delphi.dpk 。
  5. 单击编译按钮。
  6. 单击​“安装”​按钮。

要在 Lazarus 中编译和安装 WebView4Delphi,您需要遵循以下步骤:

  1. 从GitHub下载最新版本的 WebView4Delphi 。
  2. 将 WebView4Delphi 解压到一个目录中,并确保您的用户在该目录中具有写权限。
  3. 运行 Lazarus。
  4. 从包→打开包文件 (.lpk)...菜单打开文件packages\webview4delphi.lpk 。*
  5. 单击包窗口中的“编译”按钮。
  6. 单击​“使用”​按钮并选择​“安装”​选项。
  7. 当 Lazarus 询问您是否要重建 Lazarus 时,按“是”按钮。
  8. Lazarus 将在几秒钟内安装 WebView4Delphi 并重新启动。

第一步

强烈建议在开始使用 WebView4Delphi 之前阅读 Microsoft Edge WebView2 运行时文档。

安装 WebView2 Runtime 和 WebView4Delphi 包后,您可以构建 SimpleBrowser 演示。

请注意,主单元有一个初始化部分,用于创建和配置 GlobalWebView2Loader。该部分的最后一步是 GlobalWebView2Loader.StartWebView2 调用,它将加载 WebView2Loader.dll 库并异步创建全局浏览器环境。

您不必担心 GlobalWebView2Loader 的破坏,因为 WebView4Delphi 会在其最终完成部分之一中为您完成此操作。

GlobalWebView2Loader 创建的全局浏览器环境将被应用程序创建的所有浏览器使用。

无法预测哪一个会首先被创建:环境还是主要形式。

SimpleBrowser 尝试在 Tform.OnShow 事件中创建浏览器,但它使用计时器以防全局环境需要更多时间来创建。

WebView4Delphi 使用两个组件来创建浏览器。对于 VCL 或 LCL 应用程序,它使用 TWVBrowser 和 TWVWindowParent。对于 FMX 应用程序,它使用 TWVFMXBrowser 和 TWVFMXWindowParent。

TWVWindowParent 和 TWVFMXWindowParent 只是 WebView2 用来显示浏览器内容的控件。

最重要的组件是 TWVBrowser 和 TWVFMXBrowser,因为它们封装了大多数 WebView2 方法、属性和事件。

WindowParent组件和Browser组件是关联的,您需要设置它们的Browser属性。TWVWindowParent.Browser 必须设置为 TWVBrowser 实例,而 TWVFMXWindowParent.Browser 需要设置为 TWVFMXBrowser 实例。

浏览器是通过 TWVBrowser.CreateBrowser 或 TWVFMXBrowser.CreateBrowser 调用异步创建的。TWVBrowser.OnAfterCreated 事件将在浏览器完全初始化后触发,然后您就可以开始调用其方法了。

SimpleBrowser 将在触发OnAfterCreated事件之前开始加载在 TWVBrowser.DefaultURL 属性中设置的 URL 。

如果您检查其他演示或开始使用 TWVBrowser 事件,您会注意到 TWVBrowser 将WebView2 委托中声明的所有Invoke回调作为事件公开。

所有这些事件的参数类型与Invoke回调几乎相同,并且大多数都包含一个aArgs参数。如果您需要使用该接口,可以使用 uWVCoreWebView2Args 单元中相应的包装器。

例如,TWVBrowser.OnDownloadStarting 事件具有一个 ICoreWebView2DownloadStartingEventArgs 类型的 aArgs 参数。

正如您在 MiniBrowser 演示中看到的,我们需要用它用 TCoreWebView2DownloadStartingEventArgs 类包装它,如下所示:

TempArgs := TCoreWebView2DownloadStartingEventArgs.Create(aArgs);

所有 WebView2 接口都有一个同名的包装器,但用T替换了首字母I。

您还会注意到,大多数字符串类型的参数已被新的wvstring类型取代,因为 WebView2 在内部使用 WideStrings。

Delphi 用户可以直接将字符串分配给 wvstring 变量,但 Lazarus 用户必须使用 UTF8Decode 和 UTF8Encode 来转换它们。

关于名字

WebView4Delphi 只是一个数字缩写,应该理解为​WebView for Delphi​,并不意味着它基于 WebView4。

扫码加入猫哥的AI群
最后修改:2025 年 09 月 30 日
点赞的人是最酷的