WebView2浏览器窗口
用微软 Edge WebView2 打开网址或 HTML,并可读写动作变量、调用子程序。要自己画 WPF 界面,用 自定义窗口。只是用系统浏览器打开一个地址,用 打开网址。
Win11 自带运行时。其它系统可到 WebView2 下载页 安装。动作里改变量名时,网页 JS 里写死的变量名不会跟着改。
当前模块定义
sys:webview2输入 28 · 输出 12 · 枚举 5
输入参数
- 操作类型
typeEnum必填12 个选项打开网页、打开网页并等待加载完成、打开网页并等待窗口关闭
打开网页默认OpenUrl打开网页并等待加载完成OpenAndWaitLoad打开网页并等待窗口关闭OpenUrlAndWaitClose发送消息SendMessage执行脚本ExecuteScript获取窗口状态CheckWindowState关闭窗口(如果尚未关闭Close重新加载/刷新Reload停止加载Stop检查是否安装WebView2CheckInstalled【多标签】打开网址MultiTab_OpenUrl【多列】打开网址MultiColumn_OpenUrl - 网址或HTML内容
urlText必填网页地址/文件路径或html代码内容
- 网址列表
urlListList必填每行一个:网址,或"标题|网址",或"[图标]标题|网址"格式。
- 附加的浏览器参数
additionalBrowserArgumentsText必填用于设置代理等用途
- 虚拟主机映射
virtualHostToFolderText必填将文件夹映射为虚拟主机名。格式:主机名|文件夹路径。多个时,每行一个。 在html中可以使用https://servername/path/to/file.png的格式访问文件。
- User Agent
userAgentText可选可选。自定义UserAgent
- 窗口标题
titleText必填窗口标题文字。未设置时,自动使用网页标题。
- 窗口图标
iconText可选显示在窗口左上角的图标。支持fa:内置图报名:#RRGGBB或图标网址。
- 默认背景色
defaultBgColorText可选可选。设置窗口的默认背景色。
- 窗口标识
autoCloseKeyText可选(仅必要时使用)用于关闭之前打开的具有此标识的WebView2窗口。使用=表示当前动作ID。
- 如果窗口已存在
modeForExistsEnum可选5 个选项跳过此步骤、更新网址、更新网址和窗口位置
跳过此步骤默认SkipThisStep更新网址UpdateUrl更新网址和窗口位置UpdateUrlAndPosition关闭并重建窗口RecreateWindow激活窗口BringToFront - JS脚本
scriptText必填可选。
- 消息内容
sendMessageText必填Json格式的消息内容。词典变量会自动转换成json。
- 附加对象
additionalObjectsList可选PostWebMessageAsJson的附加对象列表参数内容。目前支持路径的列表
- 窗口位置
winLocationEnum可选在哪里显示选择窗口
14 个选项跟随鼠标(指针周围)、跟随鼠标(指针右下)、屏幕中间
跟随鼠标(指针周围)WithMouse1跟随鼠标(指针右下)WithMouse2屏幕中间默认CenterScreen屏幕左上TopLeft屏幕中上TopCenter屏幕右上TopRight屏幕左中LeftCenter屏幕右中RightCenter屏幕左下BottomLeft屏幕中下BottomCenter屏幕右下BottomRight全屏FullScreen最大化Maximized自定义位置Manual - 窗口尺寸/位置
winSizeText可选设置选择窗口的尺寸,格式为:宽度,高度。支持像素数值或屏幕宽高百分比,详情请参考模块文档。 "窗口位置" 类型为 "自定义位置" 时用于指定显示位置,格式为:left,top,right,bottom
- 默认下载文件夹
defaultDownloadFolderPathText可选默认的文件下载存储目录
- Profile
profileNameText可选当需要同时登录一个网站的多个账号时,可以创建独立的Profile。请输入Profile名称,不支持文件夹路径。
- 置顶显示
topMostBoolean可选 - 显示任务栏图标
showInTaskbarBoolean可选 - 不占用焦点
noActivateBoolean可选不占用焦点时也无法在窗口中输入文字
- 失去焦点后
closeWhenLostFocusEnum可选7 个选项不执行操作、关闭窗口、隐藏窗口
不执行操作默认false关闭窗口true隐藏窗口hide最小化窗口minimize如果未置顶,关闭窗口close_if_not_topmost如果未置顶,隐藏窗口hide_if_not_topmost如果未置顶,最小化窗口minimize_if_not_topmost - 按Esc关闭窗口
escCloseWindowBoolean可选 - 显示工具栏
showToolbarBoolean可选 - 添加DevTools桥
addDevToolBoolean可选 - 窗口风格
windowStyleEnum可选正常默认normal无边框none - 关闭窗口时清理Cookie
clearCookiesBoolean可选 - 失败后停止
stopIfFailBoolean可选失败后是否停止动作
输出参数
- 是否成功
isSuccessBoolean操作是否成功。获取窗口信息时,窗口是否存在。
- 是否安装WebView2
isInstalledBoolean - 窗口句柄
hWndInteger - WebView2对象
webViewObject可用于在C#脚本中使用,需运行在UI线程中。注意避免循环引用。
- 窗口位置
lastLocationText返回窗口坐标范围。格式为:left,top,right,bottom
- 当前网址
currUriText浏览器当前网址
- 网页标题
docTitleText - 网页代码
sourceCodeText - Cookie
cookiesText - 脚本运行结果
scriptResultTextjson编码的脚本运行结果内容
- 预览图
previewImageImage - 导航是否已结束
isNavCompletedBoolean是否已完成网页加载过程
概述
换 操作类型 后显示对应参数。同一 窗口标识 可对已打开的窗口发消息、跑脚本或关掉它。
WebView2浏览器窗口
参数说明
操作类型:
- 打开网页:打开网址或 HTML,然后继续。若填了 窗口标识 且窗口已在,按 如果窗口已存在 处理。
- 打开网页并等待加载完成:打开后等到加载完再继续。
- 打开网页并等待窗口关闭:等到用户关窗再继续。
- 发送消息:用 PostWebMessageAsJson 给网页发 JSON。网页里要先写接收代码。
- 执行脚本:在网页上下文跑 JS,用 ExecuteScriptAsync。只在顶层文档执行,不进 iframe。
- 获取窗口状态:取当前网址、标题、是否加载完等。
- 关闭窗口(如果尚未关闭):按 窗口标识 关掉已打开的窗口。
- 重新加载/刷新 / 停止加载
- 检查是否安装WebView2
- 【多标签】打开网址 / 【多列】打开网址:同时打开一组相关网页,方便一起关。这两种布局不和动作其它部分交互。
失败后停止:失败是否中止。默认开启。除「检查是否安装WebView2」外都有 窗口标识。
打开网页
下面参数出现在「打开网页」「打开网页并等待加载完成」「打开网页并等待窗口关闭」(部分也用于多标签 / 多列)。
网址或HTML内容:网址、本地文件路径或 HTML。
附加的浏览器参数:见 AdditionalBrowserArguments。非必要不要填,可能造成无法同时开多个 WebView2。设代理可写 --proxy-server=http://127.0.0.1:8888。
虚拟主机映射:把本地目录映射成主机名。如 myserver|d:\folder,网页里可用 https://myserver/file.png 访问该目录文件。目录必须存在。多条时每行一个。
User Agent:自定义 UA。可在 这里查看 当前浏览器 UA,或查 常见设备 UA。
窗口标题:未填时用网页标题。
窗口图标:左上角图标。支持 fa:内置图标名:#RRGGBB 或图标网址。
默认背景色:窗口默认背景。
窗口标识:相同标识避免开多个窗。再用本模块打开时,会在已有窗口里更新。= 表示用当前动作 ID。默认 =。
如果窗口已存在:仅「打开网页」「打开网页并等待加载完成」。可选跳过此步骤、更新网址、更新网址和窗口位置、关闭并重建窗口、激活窗口。默认跳过此步骤。
JS脚本:网页加载后注入,走 AddScriptToExecuteOnDocumentCreatedAsync。「执行脚本」时则是本次要跑的代码。
窗口位置:跟随鼠标、屏幕各方位、全屏、最大化、自定义位置。默认屏幕中间。
窗口尺寸/位置:自定义位置时写 left,top,right,bottom(像素或百分比,如 981,608,2610,1143、25%,25%,75%,75%)。其它位置写 width,height,如 400,700、50%,50%。
默认下载文件夹:默认保存位置。对同一 Profile 下的 WebView 窗口都生效。
Profile:同一网站要登多个账号时,用独立 Profile 存各自用户数据。通常写一个单词或拼音,不要写文件夹路径。
置顶显示:默认关闭。
显示任务栏图标:默认开启。
不占用焦点:开启后也不能在窗口里输入文字。默认关闭。
失去焦点后:不执行操作、关闭窗口、隐藏窗口、最小化窗口,以及「如果未置顶」时的关闭 / 隐藏 / 最小化。
按Esc关闭窗口:默认关闭。
显示工具栏:前进、后退、刷新、地址栏。默认关闭。
添加DevTools桥:给页面加 DevTools 桥接。默认关闭。
窗口风格:正常,或无边框。
关闭窗口时清理Cookie:关掉时清最后打开网页的 Cookie,便于退出账号。
发送消息
窗口标识:目标窗口。
消息内容:JSON 文本,经 PostWebMessageAsJson 发出。词典变量会自动转成 JSON。
附加对象:PostWebMessageAsJson 的附加对象列表,目前支持路径列表。
网页里要先接收:
window.chrome.webview.addEventListener('message', event =>
{
console.log('recv message:', event.data);
document.getElementById('js_fanyi_input').innerText = event.data.keyword;
document.getElementById('js_fanyi_input').dispatchEvent(new Event('input',{bubbles:true}));
});
执行脚本
窗口标识:目标窗口。
JS脚本:要执行的代码,走 ExecuteScriptAsync。输出 脚本运行结果 为 JSON 编码的返回值。
多标签 / 多列
这两种布局方便同时打开一组相关网页,没有和动作其它部分交互的能力,参数也相同。
多标签:适合用多个搜索引擎搜同一个词。

多列:每列较窄,适合移动端页面(通常要改 User Agent)。

WebView2浏览器窗口
网址列表:每行一个,可以是:
网址:标签标题用网页标题标题|网址:固定标题标题(ProfileName)|网址:谨慎使用。同一网站多账号时,给每个账号单独 Profile,Cookie 分开放
也支持 [图标]标题|网址。
窗口标题 / 窗口标识 / 窗口位置 / 窗口尺寸/位置 / User Agent / 默认下载文件夹 / 置顶显示:含义与打开网页相同。
动作交互
桥接对象
用来访问动作变量、调用子程序。
- 异步:
window.chrome.webview.hostObjects.v,或 1.23.5+ 的$quicker - 同步:
window.chrome.webview.hostObjects.sync.v,或$quickerSync
详见微软 AddHostObjectToScript。
读写动作变量
注入对象名为 v(variables)。
异步:
async function func(){
let v = await $quicker;
let varValue = await v.getVar("变量名");
await v.setVar("变量名", newValue);
}
同步:
function funcSync(){
let varValue = $quickerSync.getVar("text");
$quickerSync.setVar("text", "Hello world from js code");
}
支持数字、文本和列表。词典读取时自动变成 JSON 文本,不能用 setVar 写回词典。
词典变量
不能直接当 JS 对象改。整本替换:
$quickerSync.setDictByJson("dict", "{a: 1, b: 2}");
改某个键:
$quickerSync.setDictItemValue("dict", "c", 3);
读某个键:
var value = $quickerSync.getDictItemValue("dict","c");
调用子程序
1.23.15+ 推荐:await $quickerSp(spName, dataObj)。
spName:子程序名称dataObj:输入对象,每个 key 对应子程序的一个输入变量
输入和输出都是对象,不是 JSON 字符串。
async function testSubprogram(){
var obj = {input:'Hello Quicker!', age:3};
var data = await $quickerSp('subprogram1', obj);
alert('success: ' + data.output);
}
下面这种方式不建议再用:await $quicker.subprogram(spName, dataJson, boolParam, callback)。第三个参数请传 false;回调里成功时 data 是输出变量的 JSON 文本。复杂操作请用异步,同步等待容易把界面卡死。
输出
- 是否成功:本步是否完成。获取窗口信息时表示窗口是否存在。
- 是否安装WebView2:仅检查安装。
- 窗口句柄 / WebView2对象:打开网页、等待加载、获取状态。对象可在 C# 脚本里用,须在 UI 线程,避免循环引用。
- 窗口位置:
left,top,right,bottom。等待加载、获取状态、等待关窗。 - 当前网址 / 网页标题 / 网页代码 / Cookie:等待加载、获取状态。
- 脚本运行结果:仅执行脚本。
- 预览图 / 导航是否已结束:仅获取状态。
限制与排障
- 未装运行时时,先用「检查是否安装WebView2」,或到官网安装。
- 附加的浏览器参数 可能导致无法同时开多个窗口。
- 改动作变量名不会改网页里写死的名字。
- 词典不能
setVar,用setDictByJson/setDictItemValue。 - 同步调子程序可能死锁,用
$quickerSp异步。 - 虚拟主机映射格式是
主机名|文件夹路径,主机名在前。
示例
相关链接
更新历史
- 20230929 完善文档。增加多标签、多列说明。
- 20240426 修正虚拟主机映射(主机名在前)。
更新于