WebView2 CDP Sync 示例 - 纯同步 CDP 调用
概述
CDP Sync 示例是 CDP 示例的简化版本,仅使用同步 CDP 调用模式。由于不需要处理事件回调,可以使用更简单的 Dim wv As New 声明方式。
项目结构
下载源码 [ 注意:重新到bin目录注册 DLL 文件 ]
代码请到 VBMAN2 项目 demos/webview2/cdpSync 目录获取。
cdpSync/
├── Form1.frm # 主窗体,包含同步 CDP 调用
├── vbman2_webview2.vbp # VB6 项目文件
└── vbman2_webview2.vbw # VB6 工作区文件核心代码解析
1. 声明与初始化(Form1.frm)
vb
Dim wv As New cWebView2Host
Private Sub Form_Load()
wv.Initialize Me.hWnd, "https://vb6.pro"
End Sub注意:使用 Dim wv As New 自动实例化,同步模式不需要 WithEvents。
2. 纯同步 CDP 调用
vb
Private Sub MenuSendCDP_Click()
' 依次执行多个同步 CDP 调用
Dim sTitle As String
sTitle = wv.CallDevToolsProtocolMethodSync( _
"Runtime.evaluate", _
"{""expression"":""document.title""}")
Debug.Print "[Sync] Title -> " & sTitle
Dim sCookies As String
sCookies = wv.CallDevToolsProtocolMethodSync( _
"Network.getCookies", _
"{}")
Debug.Print "[Sync] Cookies -> " & sCookies
Dim sUrl As String
sUrl = wv.CallDevToolsProtocolMethodSync( _
"Runtime.evaluate", _
"{""expression"":""document.URL""}")
Debug.Print "[Sync] URL -> " & sUrl
Dim sVersion As String
sVersion = wv.CallDevToolsProtocolMethodSync( _
"Browser.getVersion", _
"{}")
Debug.Print "[Sync] Version -> " & sVersion
MsgBox "Title: " & sTitle, vbInformation, "CDP Sync Demo"
End Sub功能说明
纯同步 CDP 调用
- 所有
CallDevToolsProtocolMethodSync调用阻塞等待结果 - 返回值直接可用,无需事件处理
- 所有
简化代码结构
- 无需 WithEvents 声明
- 无需事件处理函数
- 代码逻辑线性流畅
CDP 方法演示
- Runtime.evaluate:执行 JS 并获取返回值
- Network.getCookies:获取 Cookie 信息
- Browser.getVersion:获取浏览器版本
技术要点
- 同步 vs 异步选择:同步调用更简单直接,但会阻塞当前线程。对于快速操作(毫秒级返回),同步模式更优
- 无需 WithEvents:同步模式下不使用事件回调,可使用
Dim wv As New简化声明 - 顺序执行:多个同步调用按顺序执行,后一个调用在前一个完成后才开始
应用场景
- 快速获取页面信息(标题、URL、Cookie)
- 调试和诊断工具
- 不涉及耗时操作的简单 CDP 集成
扩展建议
- 如果需要执行耗时的 CDP 操作(如截图),请参考 cdp 示例改用异步模式
- 可以将常用的 CDP 调用封装为 VB6 辅助函数,简化重复代码