道无涯自用imguiPlus接口文档(窗口防截屏|防录屏)

关于本项目

ImGUI(即 Dear ImGui)是一个与平台无关的 C++ 轻量级跨平台图形界面库。我耗时半个月,将其完全内置到 AutojsPro 中,实现无缝一键调用,并对接了绝大部分常用接口。开发者可在 Autojs 中高度自由地自定义设计 ImGUI 界面。

目前该项目暂未对外开放,仅接受定制服务(交付完整成品软件)。

  • 定制价格:1000 起

  • 详情:如有需求,可联系 道无涯 按需定制,具体可移步 软件|源码定制 页

  • 适配情况:截至2025.7.14,同样完美适配了按键精灵和懒人精灵,以插件的形式调用,同样可高度自由地自定义设计ImGUI 界面,也可以根据你的脚本平台按需适配,如有需要可以联系


设备是否必须具备Root权限

  • 非必须,亦可免root使用,ImGUI 可以通过 ADB 授权替代 Root 权限,连接电脑对Shizuku进行ADB授权,授权后可断开数据线使用,在设备重启前仅需授权一次,重启后需要重新激活授权。
  • 我已在非 Root 的安卓15设备上进行Shuzuku授权测试,使用完全正常!

示例Demo

刚对接好后,就迫不及待地写了个Demo,效果是真tm的出奇的无敌好

王者秒换装:一个已实现的 Demo 示例,展示 ImGUI 在 AutojsPro 中的应用。




具体演示视频可以看下面的特性!

特性

  • 防截屏:防止界面被截图
  • 防录屏:防止界面被录制(这是手机实录效果,肉眼还是看得到悬浮窗的)
  • 触摸穿透:支持触摸事件穿透界面,悬浮窗不妨碍正常点击
  • 纯C点击:额外写了纯C点击,脚本点击与手滑动不冲突
  • 双向心跳验证:具备超强存活能力,永不被系统杀死
  • 多指触控:有接口可选择性地开启多指触控,从而实现当已有手指在屏幕上的时候依旧能够触发悬浮按钮的点击事件,满足某些需要半自动触发的cpp点击操作(例如秒换装)

初始化ImGUI

该接口用于初始化 ImGUI,仅需调用一次即可。

类构造函数

ImguiPlus(context, useADB, params)

返回值

ImguiPlus 对象

参数

字段 类型 必须 说明
context context 是 上下文
useADB boolean 是 是否使用ADB,否的话则默认使用root
engineExists boolean 是 是否已存在imguiPlus引擎(减少初始化相关花销)
params string[] 是 初始化参数数组,见下表

params 参数详情

字段 类型 必须 说明
title string 是 窗口标题
posX float 是 窗口初始位置 X
posY float 是 窗口初始位置 Y
width float 是 窗口宽度
height float 是 窗口高度
theme string 是 窗口主题,可选值:Dark, Light, Classic, Pink, Blue, ModernDark, CyanDusk, OrangeDark, CrystalClear, VibrantNight, PurpleDream
showCloseButton boolean 是 是否显示关闭按钮
transparent boolean 是 窗体是否透明
isWindowCollapsed boolean 是 是否收起窗体
fontSize float 是 窗口字体大小
packageName string 否 本参数可省略,不省略则用于传入null字符串,为null那么就不会进行双向心跳验证,一般aj打包的才省略

更新ImGUI

该接口用于动态更新 ImGUI 窗口内容。

类方法

updateUI(commands)

返回值

字符串或无返回值

参数

字段 类型 必须 说明
commands string[] 是 更新内容数组,每项为单独命令

关闭ImGUI

该接口用于关闭 ImGUI。

类方法

shutdown(useADB)

参数

字段 类型 必须 说明
useADB boolean 是 是否使用ADB,与初始化同步

组件的增加相关

增加标题栏 (addTabBar)

用于添加标题栏。

参数

字段 类型 必须 说明
tabIds string[] 是 标题栏的标题数组
flags int 是 ImGuiTabBarFlags,详见 ImGui 文档
defaultTabId string 是 默认展示的标题页标题

增加按钮 (addButton)

用于添加普通按钮。

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 按钮 ID
label string 是 按钮标题
width float 是 按钮宽度
height float 是 按钮高度
cornerRadius float 是 按钮圆角
posX float 是 按钮偏移位置 X
posY float 是 按钮偏移位置 Y
tooltip string 是 悬停时显示的提示文本

增加悬浮窗按钮 (addButtonEx)

用于添加独立于窗口的悬浮按钮。

参数

与 addButton 参数相同,见上表。

移除悬浮窗按钮 (removeButtonEx)

用于移除悬浮窗按钮。

参数

字段 类型 必须 说明
id string 是 按钮 ID

增加静态文本 (addText)

用于添加静态文本。

参数

字段 类型 必须 说明
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 文本 ID
text string 是 文本内容
color string 是 文本颜色,若为null则会按照默认颜色(跟随主题变化)
posX float 是 文本偏移位置 X
posY float 是 文本偏移位置 Y

增加输入框 (addInputText)

增加输入框。

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 输入框 ID
initialText string 是 默认的文本
width float 是 输入框宽度
textColor string 是 文本颜色,若为null则会按照默认颜色(跟随主题变化)
editable boolean 是 是否可编辑

增加多行输入框 (addInputTextMultiline)

增加多行输入框。

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 输入框 ID
initialText string 是 默认的文本
rows int 是 最大显示行数(超过则自动展示滑动条)

开启折叠条 (beginCollapsingHeader)

开启折叠条,在beginCollapsingHeader->endCollapsingHeader中间的组件都将被包含在此折叠条里

参数

字段 类型 必须 说明
label string 是 折叠条标题
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
openByDefault boolean 是 是都默认展开

关闭折叠条 (endCollapsingHeader)

关闭折叠条

增加日志窗体 (addLogWindow)

增加日志窗体,用于显示日志,带滑动条,可清空和导出日志,使用appendLog追加的日志才可显示到这上面

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 日志 ID
width float 是 窗体宽度
height float 是 窗体高度

增加颜色采集器 (addColorPicker)

增加颜色采集器,用于采集颜色

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId string 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 颜色采集器 ID
r float 是 红色分量
g float 是 绿色分量
b float 是 蓝色分量
a float 是 透明度分量
flags int 是 颜色采集器标志,具体标志可查看ImGUI文档
tooltip string 是 悬停时显示的提示文本

增加分隔线 (addSeparator)

增加分隔线

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId string 是 目标标题栏 ID(空则加到所有标题栏)

增加勾选框 (addCheckbox)

增加勾选框

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 勾选框 ID
label string 是 按钮标题
initialState boolean 是 勾选框默认状态
tooltip string 是 悬停时显示的提示文本

增加进度条 (addSlider)

增加进度条

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 进度条 ID
initialValue float 是 默认值
min float 是 最小值
max float 是 最大值
tooltip string 是 悬停时显示的提示文本

增加下拉框 (addComboBox)

增加下拉框

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 下拉框 ID
items string [] 是 所有的下拉项的数组
initialSelection int 是 默认选中项

增加单选按钮组 (addRadioButtonGroup)

增加单选按钮组

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 单选按钮组 ID
labels string [] 是 所有的单选项的数组
initialSelection int 是 默认选中项
horizontal boolean 是 是否水平显示

增加开关 (addSwitch)

增加开关

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 开关 ID
label string 是 开关显示的文本
initialState boolean 是 默认状态
activeColorStr string 是 开状态时的颜色(#rrggbb)
inactiveColorStr string 是 关状态时的颜色(#rrggbb)
tooltip string 是 悬停时显示的提示文本

增加弹窗 (addPopup)

增加弹窗,模拟安卓alert和confirm弹窗

参数

字段 类型 必须 说明
id string 是 弹窗 ID
title string 是 弹窗标题
content string 是 弹窗内容
positiveButton string 是 确认按钮文本
negativeButton string 是 取消按钮文本(为空时即不显示,代表alert)
buttonPosX float 是 按钮偏移X

增加选择弹窗 (addAlertChoicePopup)

增加选择弹窗,模拟安卓单选和多选弹窗

参数

字段 类型 必须 说明
id string 是 弹窗 ID
title string 是 弹窗标题
content string 是 弹窗内容
items string [] 是 可选择的所有项的数组
isSingle boolean 是 是否单选
defaultSelected int [] 是 默认选中项
positiveButton string 是 确认按钮文本
buttonPosX float 是 按钮偏移X

toast显示 (showToast)

toast显示,模拟安卓showToast

参数

字段 类型 必须 说明
text string 是 显示的文本
duration int 是 显示的时长(毫秒)
posX float 是 显示偏移X
posY float 是 显示偏移Y
fontSize float 是 显示的字体大小
cornerRadius float 是 显示的背景的圆角

增加帧率显示 (addFps)

增加帧率显示

参数

字段 类型 必须 说明
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 帧率 ID
threshold string 是 分界值,小于本值显示positiveColor,反之negativeColor
positiveColor string 是 颜色(#rrggbb)
negativeColor string 是 颜色(#rrggbb)
posX float 是 偏移X
posY float 是 偏移Y

增加表格 (addTable)

增加表格

参数

字段 类型 必须 说明
sameLine boolean 是 是否与上个组件同一行
tabId int 是 目标标题栏 ID(空则加到所有标题栏)
id string 是 表格 ID
headers string [] 是 表格头标题数组
data string [][] 是 表格数据二维数组

各组件的值获取与设置相关方法

追加日志 (appendLog)

追加日志到日志窗体,显示日志在日志窗体上

参数

字段 类型 必须 说明
id string 是 要追加的窗体日志 ID
log string 是 日志文本内容
typeOrColor string 是 日志类型(log,warn,info.debug)或者指定颜色(#rrggbb)

获取表格选中行 (getTableSelected)

获取表格选中行

返回值

字符串,选中行索引,多个选中行以,拼接

参数

字段 类型 必须 说明
id string 是 表格 ID

删除表格选中行 (deleteSelectedTableRows)

删除表格选中行

参数

字段 类型 必须 说明
id string 是 表格 ID

修改表格选中行 (updateSelectedTableRows)

修改表格选中行

参数

字段 类型 必须 说明
id string 是 表格 ID
newRowData string [] 是 要修改的新数据的数组,如果某列要保持原数据则放空即可

增加表格行数据 (addTableRow)

增加表格行数据

参数

字段 类型 必须 说明
id string 是 表格 ID
rowData string [] 是 表格行数据的数组

获取表格的行列数 (getTableDimensions)

获取表格的行列数

返回值

字符串,行数与列数,用,拼接

参数

字段 类型 必须 说明
id string 是 表格 ID

获取表格单元格的值 (getTableDimensions)

获取表格某个单元格的值

返回值

字符串,单元格的值,空字符串一般代表没有这个单元格

参数

字段 类型 必须 说明
id string 是 表格 ID
row int 是 行索引(从0计数)
col int 是 列索引(从0计数)

清空表格数据 (clearTable)

清空表格数据

参数

字段 类型 必须 说明
id string 是 表格 ID

获取单选按钮组选中项 (getRadioButtonSelected)

获取单选按钮组选中项

返回值

字符串,选中项索引

参数

字段 类型 必须 说明
id string 是 单选按钮组 ID

设置单选按钮组选中项 (setRadioButtonSelected)

设置单选按钮组选中项

参数

字段 类型 必须 说明
id string 是 单选按钮组 ID
index int 是 选中项索引

获取开关状态 (getSwitchState)

获取开关状态

返回值

字符串,true或者false

参数

字段 类型 必须 说明
id string 是 开关 ID

设置开关状态 (setSwitchState)

设置开关状态

参数

字段 类型 必须 说明
id string 是 开关 ID
state boolean 是 开关状态

获取勾选框状态 (getCheckboxState)

获取勾选框状态

返回值

字符串,true或者false

参数

字段 类型 必须 说明
id string 是 勾选框 ID

设置勾选框状态 (setCheckboxState)

设置勾选框状态

参数

字段 类型 必须 说明
id string 是 勾选框 ID
state boolean 是 勾选框状态

获取进度条的值 (getSliderValue)

获取进度条的值

返回值

字符串,进度条当前的值

参数

字段 类型 必须 说明
id string 是 进度条 ID

设置进度条的值 (setSliderValue)

设置进度条的值

参数

字段 类型 必须 说明
id string 是 进度条 ID
value float 是 进度条的值

获取下拉框的选中项 (getComboBoxSelected)

获取下拉框的值

返回值

字符串,选中项的索引

参数

字段 类型 必须 说明
id string 是 下拉框 ID

设置下拉框的选中项 (setComboBoxSelected)

设置进度条的值

参数

字段 类型 必须 说明
id string 是 下拉框 ID
index int 是 下拉框的选中项索引

获取颜色采集器的颜色值 (getColorPickerValue)

获取颜色采集器的颜色值

返回值

字符串,r、g、b、a,用,连接

参数

字段 类型 必须 说明
id string 是 颜色采集器 ID

设置颜色采集器的颜色值 (setColorPickerValue)

设置颜色采集器的颜色值

参数

字段 类型 必须 说明
id string 是 颜色采集器 ID
r float 是 红色分量
g float 是 绿色分量
b float 是 蓝色分量
a float 是 透明度分量

获取输入框内容 (getInputText)

获取输入框内容

返回值

字符串,输入框的内容

参数

字段 类型 必须 说明
id string 是 输入框 ID

设置输入框内容 (setInputText)

设置输入框内容

参数

字段 类型 必须 说明
id string 是 输入框 ID
text string 是 要设置的文本

获取多行输入框内容 (getInputTextMultiline)

获取多行输入框内容

返回值

字符串,多行输入框的内容

参数

字段 类型 必须 说明
id string 是 多行输入框 ID

设置多行输入框内容 (setInputTextMultiline)

设置多行输入框内容

参数

字段 类型 必须 说明
id string 是 多行输入框 ID
text string 是 要设置的文本

各组件的回调事件

心跳验证 (onHeartbeatValidation)

字段 类型 返回说明与示例
id null 无
data null 无

窗体被收起或者展开 (onWindowCollapsed)

字段 类型 返回说明与示例
id null 无
data boolean true/false, 窗体是否被收起

窗口被拖动 (onWindowDragged)

字段 类型 返回说明与示例
id null 无
data string "100,100",窗体被拖动到的x和y坐标

窗口被关闭(onWindowClosed)

字段 类型 返回说明与示例
id null 无
data null 无

按钮被单击(onButtonClicked)

字段 类型 返回说明与示例
id string 按钮id
data null 无

按钮被长按(onButtonLongClicked)

字段 类型 返回说明与示例
id string 按钮id
data null 无

悬浮窗按钮被拖拽(onButtonDragged)

字段 类型 返回说明与示例
id string 悬浮窗按钮id
data string "100,100",悬浮窗按钮被拖动到的x和y坐标

输入框被点击(onInputClicked)

字段 类型 返回说明与示例
id string 输入框id
data null 无

输入框文本被改变(onInputTextChanged)

字段 类型 返回说明与示例
id string 输入框id
data string 输入框当前文本

日志被导出(onExportLogs)

字段 类型 返回说明与示例
id string 日志id
data string 要导出的所有日志文本

日志被清空(onLogCleared)

字段 类型 返回说明与示例
id null 无
data null 无

颜色被改变(onColorChanged)

字段 类型 返回说明与示例
id string 颜色选择器id
data string r,g,b,a 以,相连的字符串

勾选框状态被改变(onCheckboxStateChanged)

字段 类型 返回说明与示例
id string 勾选框id
data boolean 当前勾选框状态

进度条被拖动(onSliderChanged)

字段 类型 返回说明与示例
id string 进度条id
data string 当前进度条的值

下拉框选择项被改变(onComboBoxSelected)

字段 类型 返回说明与示例
id string 下拉框id
data int 当前下拉框的选中项索引

单选按钮组选中项被改变(onRadioButtonSelected)

字段 类型 返回说明与示例
id string 单选按钮组id
data int 当前单选按钮组的选中项索引

开关状态被改变(onSwitchStateChanged)

字段 类型 返回说明与示例
id string 开关id
data boolean 当前开关状态

表格行被点击(onTableRowClicked)

字段 类型 返回说明与示例
id string 表格id
data string row(int)与selected(boolean)用,连接,某行的选中状态

表格行被删除(onTableRowsDeleted)

字段 类型 返回说明与示例
id string 表格id
data null 无

表格增加行(onTableRowAdded)

字段 类型 返回说明与示例
id string 表格id
data null 无

表格更新行(onTableRowsUpdated)

字段 类型 返回说明与示例
id string 表格id
data null 无

表格被清空(onTableCleared)

字段 类型 返回说明与示例
id string 表格id
data null 无

弹窗确定按钮被点击(onPopupOk)

字段 类型 返回说明与示例
id string 弹窗id
data null 无

弹窗取消按钮被点击(onPopupCancel)

字段 类型 返回说明与示例
id string 弹窗id
data null 无

选择弹窗按钮被点击(onAlertChoiceSelected)

字段 类型 返回说明与示例
id string 弹窗id
data string 所有项的选中状态以,连接:“true,false,true"

其它附加方法

纯C点击 (cppClick)

实现纯 C 触摸点击,支持手滑点击并存,互不干扰。

参数

字段 类型 必须 说明
x float 是 坐标 X
y float 是 坐标 Y
t float 是 点击时长

设置多指触控 (setMoreTouch)

设置多指触控,默认是关闭多指触控的。

参数

字段 类型 必须 说明
isMoreTouch boolean 是 是否开启多指触控

设置全局透明度 (setAlpha)

设置窗口全局透明度。

参数

字段 类型 必须 说明
alpha float 是 透明度值 (0-1)

设置窗体是否收起 (setWindowCollapsed)

设置窗体是否收起。

参数

字段 类型 必须 说明
collapsed boolean 是 是否收起

获取心跳 (getHeartbeatValidation)

用于检测 ImGUI 是否存活。

返回值

成功返回字符串 alive

参数

无

设置全局主题 (setTheme)

设置全局主题。

参数

字段 类型 必须 说明
themeName string 是 主题名称,可选值:Dark, Light, Classic, Pink, Blue, ModernDark, CyanDusk, OrangeDark, CrystalClear, VibrantNight, PurpleDream

设置窗口常见样式 (setStyleProperties)

设置窗口常见样式

参数

字段 类型 必须 说明
framePaddingX float 是 窗口内边距X
framePaddingY float 是 窗口内边距Y
itemSpacingX float 是 项目间距X
itemSpacingY float 是 项目间距Y
windowRounding float 是 窗口圆角
scrollbarSize float 是 滚动条宽度
grabMinSize float 是 滑动条宽度

作 者:道无涯
来 源:道无涯博客
链 接: https://www.daowuya.love/imguiplus/
版 权 声 明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。文章版权归作者所有,未经允许请勿转载!


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇