WebView2 5.7 帮助说明
WebView2 封装组件 API 参考文档
文档版本:V1.0
适配内核:Microsoft WebView2
最低运行版本:111.0.1661.44
目录
- 文档概述
- 基础异常与全局定义
- 枚举类型全集
- 结构体与集合类型
- 核心接口详细说明
- 核心控件 TWebView
- 全部事件参数详解
- 网络请求响应封装类
- 开发实用示例
- 错误码对照表
1 文档概述
1.1 组件简介
本组件为封装的 WebView2 浏览器内核控件,继承自
TGraphicControl,可嵌入 Windows 窗体应用,实现网页加载、JS 双向交互、Cookie 管理、打印 PDF、网络拦截、证书认证、自定义菜单、权限管控等全套浏览器能力。1.2 运行环境
- 操作系统:Windows 10 / Windows 11
- 依赖库:WebView2Loader.dll
- 最低浏览器内核:111.0.1661.44
1.3 开发须知
所有接口基于原生 WebView2 COM 接口二次封装,兼容原生全部能力;事件支持回调与匿名委托两种写法;路径、中文、特殊字符自动适配处理。
2 基础异常与全局定义
2.1 自定义异常类
delphi
EWebViewError = class(Exception);
说明:组件内部所有运行错误统一抛出此异常,用于捕获浏览器内核、接口调用异常。
2.2 全局常量
delphi
RequiredBrowserVersion = '111.0.1661.44';
含义:组件强制要求的最低 WebView2 运行时版本。
2.3 全局变量
表格
| 变量名 | 类型 | 说明 |
|---|---|---|
| LibraryName | string | 默认加载库文件名 WebView2Loader.dll |
| WebViewLibrary | HMODULE | WebView 库模块句柄 |
2.4 全局公共函数
function Loaded: Boolean判断 WebView 库是否成功加载procedure LoadLibrary手动加载 WebView2 依赖库procedure UnloadLibrary释放已加载的内核库function GetBrowserVersion(const BrowserFolder: string = ''): string获取本地已安装 WebView 浏览器版本号function BrowserAvailable(const BrowserFolder: string = ''): Boolean检测当前环境是否满足组件运行条件
3 枚举类型全集
3.1 按键相关枚举
TKeyEventKind
按键事件类型
- keKeyDown:按键按下
- keKeyUp:按键抬起
- keSystemKeyDown:系统按键按下
- keSystemKeyUp:系统按键抬起
TBoundsMode
画布像素模式
- bmRasterizationScale:缩放适配像素
- bmRawPixels:原始物理像素
3.2 导航与错误枚举
TWebError
网页访问错误类型
weUnknown 未知错误、证书类错误、超时、连接中断、域名解析失败、代理认证错误等
TMoveFocusReason
焦点切换原因
- frProgrammatic:代码主动切换
- frNext:向后切换焦点
- frPrevious:向前切换焦点
3.3 证书与权限枚举
TCertificateKind
客户端证书类型
- ckSmartCard:智能卡证书
- ckPin:密钥证书
- ckOther:其他类型证书
TPermissionKind
网页权限申请类型
麦克风、摄像头、定位、通知、剪贴板、文件读写、自动播放、字体访问等
TPermissionState
权限授权状态
- psDefault:系统默认处理
- psAllow:允许权限
- psDeny:拒绝权限
3.4 下载相关枚举
TDownloadState
下载任务状态
- dsInProgress:下载进行中
- dsInterrupted:下载中断暂停
- dsCompleted:下载完成
TDownloadInterruptReason
下载中断原因
文件权限、磁盘空间、网络异常、服务器错误、用户取消、进程崩溃等
TDownloadDialogCornerAlignment
下载弹窗停靠位置
四角方位对齐模式
3.5 打印相关枚举
TPrintOrientation
打印方向
- poPortrait:纵向打印
- poLandscape:横向打印
TPrintColorMode
色彩模式
- cmDefault:默认
- cmColor:彩色
- cmGrayscale:灰度打印
TPrintDuplex
双面打印模式
单面、长边双面、短边双面
TPrintCollation
分页整理模式
TPrintMediaSize
纸张尺寸类型
TPrintStatus
打印结果状态
3.6 菜单与页面枚举
TContextMenuItemKind
右键菜单项类型
命令、复选框、单选框、分隔线、子菜单
TContextMenuTargetKind
右键点击目标类型
页面、图片、选中文本、音频、视频
3.7 进程与行为枚举
TProcessKind
浏览器子进程类型
主进程、渲染进程、GPU 进程、插件进程等
TProcessFailedKind
进程异常退出类型
TProcessFailedReason
进程崩溃终止原因
TBrowsingDataKind
浏览数据清理类型
缓存、Cookie、历史记录、本地存储、密码记录等
TColorScheme
页面主题配色
- csAuto:跟随系统
- csLight:浅色模式
- csDark:深色模式
TTrackingPreventionLevel
隐私防护等级
关闭、基础、均衡、严格防护
TResourceAccess
资源访问控制策略
允许、拒绝、拒绝跨域
TSameSite
Cookie 跨站策略
None、Lax、Strict
TDialogKind
JS 弹窗类型
警告框、确认框、输入框、页面卸载提示
TWebResource
网页资源请求类型
文档、样式、图片、脚本、音视频、接口请求、WebSocket 等
TFaviconFormat
图标格式:PNG、JPEG
TCapturePreviewFormat
页面截图格式:PNG、JPEG
4 结构体与集合类型
4.1 TKeyStatus 按键状态信息
表格
| 成员 | 类型 | 说明 |
|---|---|---|
| RepeatCount | Cardinal | 按键重复次数 |
| ScanCode | Cardinal | 键盘扫描码 |
| ExtendedKey | Boolean | 是否扩展按键 |
| MenuKeyDown | Boolean | 菜单键按下标记 |
| KeyDown | Boolean | 按键按下状态 |
| KeyReleased | Boolean | 按键抬起状态 |
4.2 THeader / THeaders HTTP 请求头
delphi
THeader = record
Name: string;
Value: string;
end;
THeaders = array of THeader;
4.3 TProcessInfo 进程信息
记录子进程 ID 与进程类型
4.4 数组集合定义
- IContextMenuItems = array of IContextMenuItem
- TCookies = array of ICookie
- TClientCertificates = array of IClientCertificate
5 核心接口详细说明
5.1 ICertificate 服务器证书接口
只读获取服务器证书全部信息
表格
| 属性 | 访问权限 | 说明 |
|---|---|---|
| Certificate | 只读 | 原生 WebView 证书对象 |
| DisplayName | 只读 | 证书显示名称 |
| Issuer | 只读 | 证书颁发机构 |
| IssuerChain | 只读 | 完整证书颁发链 |
| Pem | 只读 | PEM 格式证书文本 |
| SerialNumber | 只读 | 证书序列号 |
| Subject | 只读 | 证书主体信息 |
| ValidFrom | 只读 | 证书生效时间 |
| ValidTo | 只读 | 证书过期时间 |
5.2 IClientCertificate 客户端证书接口
客户端证书选择使用,继承基础证书字段,扩展证书类型标识
5.3 IContextMenuItem 右键菜单项
属性
勾选状态、子菜单集合、命令 ID、启用状态、图标数据、菜单类型、显示文本、名称、快捷键
事件
OnSelected:菜单项点击触发事件
5.4 IContextMenuItemCollection 菜单集合
方法:插入菜单项、删除菜单项
属性:菜单总数、索引读取菜单项
5.5 IContextMenuTarget 右键点击目标
获取点击位置所属页面、链接、图片、选中文本、框架地址、是否可编辑等信息
5.6 ICookie Cookie 操作接口
可读可修改 Cookie 名称、值、域名、路径、过期时间、HttpOnly、Secure、跨站策略、会话标记
5.7 IDownload 下载任务接口
方法
Cancel 取消下载、Pause 暂停、Resume 恢复下载
属性
可恢复状态、文件路径、文件类型、已下载大小、总大小、下载状态、中断原因
事件
进度变更、状态变更、预估完成时间变更
5.8 IFrame 网页框架接口
框架内注入宿主对象、发送网页消息、二进制数据传递、移除注入对象;读取框架名称、销毁状态
5.9 IPrintSettings 打印配置接口
份数、色彩、双面打印、纸张边距、纸张尺寸、横竖方向、页眉页脚、背景打印、缩放比例、页码范围、打印机名称等全量打印参数
5.10 ISharedBuffer 共享内存缓冲区
高效二进制数据交互,支持关闭缓冲区、获取大小、内存指针
5.11 IWindowFeatures 新窗口特性
读取新窗口尺寸、坐标、菜单栏、滚动条、状态栏、工具栏显示状态
6 核心控件 TWebView
继承关系:
窗体可视浏览器核心控件
TWebView = class(TGraphicControl)
6.1 公共方法分类
页面导航
Navigate 跳转地址、ShowHtml 加载源码、Back 后退、Forward 前进、Refresh 刷新、Stop 停止加载
脚本交互
ExecuteScript 执行 JS、AddScript 注入全局脚本、PostWebMessage 双向消息通信、共享数据传递
Cookie 管理
创建、新增、删除、清空、查询站点 Cookie
打印导出
普通打印、弹出打印对话框、导出 PDF 文件、创建打印配置实例
菜单与截图
创建自定义右键菜单、页面截图保存
网络与权限
自定义协议、资源请求拦截、授权状态设置、主机目录映射
调试工具
打开开发者工具、调用 DevTools 协议接口
生命周期
进程暂停、恢复、关闭下载弹窗、窗口焦点控制
6.2 运行时属性
页面地址、页面标题、缩放比例、UA 标识、主题模式、导航前进后退可用性、静音状态、全屏状态、脚本开关、右键菜单开关、下载目录、内核版本、进程信息等
6.3 设计期发布属性
设计器可直接配置:激活状态、数据存储目录、隐私无痕模式、浏览器程序路径、语言、缩放、跟踪防护、启动参数等
7 全部事件参数详解
7.1 TAcceleratorKeyPressedEvent 快捷键按下
delphi
procedure(Sender: TObject; Kind: TKeyEventKind; VirtualKey: Cardinal; LParam: Integer; const Status: TKeyStatus; var Handled: Boolean)
- Sender:触发控件实例
- Kind:按键事件类型
- VirtualKey:系统虚拟键码
- LParam:窗口消息原始参数
- Status:按键详细状态结构体
- Handled:赋值 True 拦截按键,内核不再处理
7.2 TAddScriptCompletion 脚本注入完成
- Sender:控件
- ScriptID:注入脚本唯一标识
7.3 TBasicAuthenticationRequestedEvent 基础账号认证
- Uri:认证请求地址
- Challenge:认证质询信息
- Cancel:是否取消访问
- UserName、Password:自定义填入账号密码
7.4 TBrowserProcessExitedEvent 浏览器进程退出
- Process:退出进程 ID
- FailedExit:True = 异常退出,False = 正常关闭
7.5 TClientCertificateRequestedEvent 客户端证书请求
- Host、Port:目标服务器地址端口
- IsProxy:是否代理认证
- Cancel:取消证书请求
- Handled:自定义处理标记
- Authorities:可信证书颁发机构列表
- Certificates:本地可用证书数组
- SelectedCertificate:最终选定提交证书
7.6 TContentLoadingEvent 内容开始加载
- IsErrorPage:是否错误页面
- NavigationId:本次导航唯一 ID
7.7 TContextMenuRequestedEvent 右键菜单弹出
- MenuItems:可编辑菜单集合
- Location:鼠标点击坐标
- Target:点击页面目标对象
- SelectedCommand:菜单执行命令 ID
- Handled:True 屏蔽系统默认右键菜单
7.8 TDomContentLoadedEvent DOM 加载完成
- NavigationId:所属导航编号,页面 DOM 树构建完毕触发
7.9 TExceptionEvent 组件异常捕获
- Exception:捕获到的异常实例
7.10 TMoveFocusRequestedEvent 焦点切换请求
- Reason:焦点切换原因
- Handled:拦截焦点跳转
7.11 TNavigationCompletedEvent 导航结束
- Success:导航成功与否
- WebError:错误类型枚举
- NavigationId:导航编号
- HttpStatusCode:HTTP 响应状态码
7.12 TNavigationStartingEvent 开始导航
- Uri:目标跳转地址
- UserInitiated:是否用户手动点击
- Redirected:是否重定向请求
- RequestHeaders:请求头集合
- Cancel:True 终止本次跳转
- FrameAncestors:嵌套框架溯源地址
7.13 TNewWindowRequestedEvent 新建弹窗请求
- Uri:新窗口地址
- Name:窗口名称
- NewWindow:自定义内核实例承载弹窗
- Features:窗口样式尺寸属性
- Handled:拦截默认弹窗
7.14 TPermissionRequestedEvent 权限申请
- Uri:申请权限页面
- PermissionType:权限类型
- UserInitiated:用户主动申请标记
- State:设置允许 / 拒绝 / 默认
7.15 TProcessFailedEvent 进程崩溃异常
- Kind:异常进程类型
- Reason:崩溃原因
- ExitCode:进程退出错误码
- ProcessDescription:进程描述
7.16 TScriptDialogOpeningEvent JS 弹窗弹出
- Uri:弹窗所属页面
- Kind:弹窗类型
- Message:弹窗提示文字
- DefaultText:输入框默认内容
- ResultText:自定义返回输入内容
- Accept:确认 / 取消弹窗
7.17 TServerCertificateErrorEvent 服务器证书错误
- Status:证书错误类型
- RequestUri:访问地址
- Certificate:错误证书信息
- Action:允许访问 / 拒绝 / 默认处理
7.18 TWebMessageReceivedEvent 网页消息接收
- Source:消息来源
- Message:普通文本消息
- Json:JSON 结构化消息
7.19 TWebResourceRequestedEvent 资源请求拦截
- Request:请求对象,可修改地址、请求头、请求体
- Response:自定义返回响应数据
- Deferred:延迟处理请求标记
7.20 TWebResourceReceivedEvent 资源接收完成
- Request:原始请求信息
- Response:页面最终响应数据
其余状态变更类事件(标题、图标、全屏、音频、缩放、窗口关闭)仅携带触发控件实例,无额外业务参数。
8 网络请求响应封装类
8.1 TWebResourceRequest 网络请求构造类
方法:判断请求头、移除请求头
属性:请求地址、请求方法、请求头、请求体、原生请求对象
8.2 TWebResourceResponse 自定义响应构造
方法:追加响应头、判断头部存在
属性:状态码、原因短语、响应头、响应数据流
8.3 TWebResourceResponseView 只读响应读取
仅读取页面返回数据、头部、状态码,支持异步获取二进制内容
9 开发实用示例
- 基础网页加载:赋值 Uri 或调用 Navigate 访问网址
- Delphi 与 JS 双向通信:PostWebMessage 发送,OnWebMessageReceived 接收
- Cookie 操作:增删查改站点 Cookie,适配登录态保存
- 自定义右键菜单:拦截菜单事件,增删自定义菜单项
- 网页打印 & 导出 PDF:调用打印方法,配置打印参数生成 PDF 文件
- 网络拦截篡改:拦截请求,修改请求头、替换响应内容
- 客户端证书适配:监听证书请求事件,自动选择本地证书
- 权限管控:拦截权限申请,统一授权策略
10 错误码对照表
- 网页错误枚举释义:证书错误、网络超时、连接失败、域名解析失败等对应中文说明
- 下载中断原因:文件、网络、服务器、用户操作、进程异常分类解读
- 进程失败原因:各类子进程崩溃、退出场景说明

浙公网安备 33010602011771号