手机自动化脚本按键精灵实战:随机布局安全数字键盘的自动化输入方案

很多 App、游戏里面都有随机安全键盘 ,每次弹出键盘,0‑9 数字按钮的位置都会打乱变化。这种键盘做了防护,直接用inputtextkeyPress这类命令是无法完成输入的,脚本不能直接往输入框写入内容,只能模拟点击屏幕上的数字按钮来完成填写。

比如验证码、计算题验证场景,算出结果之后,需要点击随机排布的数字按键提交。键盘布局每次都变,坐标不能写死,那脚本要如何定位到对应数字按钮?今天分享两种常用实现方案:找图识别法OCR 文字识别法

方法一:找图法,图片匹配定位数字按钮

核心思路:提前把 0‑9 十个数字按钮截图,每个图片以对应数字命名,例如0.png1.png一直到9.png。脚本运行时,循环去屏幕上查找对应数字图片,找到后获取坐标,执行点击操作。

步骤 1:准备素材

截取安全键盘上每一个数字按钮图片,命名为数字本身,放到脚本附件里。

步骤 2:拆分待输入数字

待输入的数字,例如66,不能直接整体处理,需要拆成单个字符66,逐个查找图片、逐个点击。

注意:存储数字的变量必须是字符串类型 ,否则Len()无法获取字符长度,可以用CStr()强制转为字符串。

拆分示例代码:

复制代码
Dim num = "66"
Dim n
For i = 1 To Len(num)
	n = Mid(num, i, 1)
	TracePrint n
Next
步骤 3:封装完整点击函数

把找图、判断、点击、延时封装成函数,后续直接调用,完整代码:

复制代码
Function 键盘点击(num)
    Dim intx,inty,n
    For i = 1 To Len(num)
        n = Mid(num, i, 1)
        FindPic 0, 0, 0, 0, "Attachment:"&n&".png","000000", 0, 0.9, intX, intY
        If intX > -1 And intY > -1 Then 
            tap intx,inty
        End If
        Delay 300
    Next
End Function

调用示例:Call 键盘点击("66"),即可自动依次点击两个数字 6。

优缺点:

✅ 识别稳定,对环境光线、界面变化容错好;

❌ 需要提前准备 10 张截图素材,如果按钮样式更新,截图就要重新制作。

方法二:OCR 文字识别,直接读取键盘上数字文本

OCR 方案不需要提前截图,直接框选安全键盘所在区域,调用OcrEx识别区域内所有文字,解析返回结果,拿到数字文本 + 对应 X、Y 屏幕坐标,构建数字‑坐标映射表,之后按需要点击对应坐标。

1、OCR 获取键盘识别结果

指定键盘区域,执行识别,返回的表格数据包含文本、置信度、x/y 坐标等信息。

复制代码
Dim tb = OcrEx(113,394,427,612)
TracePrint encode.TableToJson(tb)
For i = 1 To Len(tb)
TracePrint tb[i]["text"]
Next

输出样例(节选):

复制代码
[
{"h":35,"score":0.52350407838821,"text":"查除","w":57,"x":358,"y":410},
{"h":31,"score":0.99966430664062,"text":"确认","w":56,"x":357,"y":559},
{"h":33,"score":0.99936264753342,"text":"4","w":27,"x":296,"y":559},
{"h":34,"score":0.99967694282532,"text":"5","w":27,"x":138,"y":484},
{"h":35,"score":0.99971395730972,"text":"2","w":26,"x":139,"y":410},
{"h":35,"score":0.99921548366547,"text":"6","w":26,"x":218,"y":557},
{"h":32,"score":0.99972718954086,"text":"3","w":25,"x":218,"y":486},
{"h":34,"score":0.60895961523056,"text":"8","w":25,"x":296,"y":411},
{"h":33,"score":0.96144515275955,"text":"7","w":25,"x":218,"y":411},
{"h":35,"score":0.99800330400467,"text":"9","w":24,"x":139,"y":558},
{"h":31,"score":0.83861255645752,"text":"0","w":22,"x":376,"y":486},
{"h":31,"score":0.99609309434891,"text":"1","w":20,"x":298,"y":486}
]

返回结果里面有 "确认" 这类无关文字,我们只需要保留数字,以及它的 x、y 坐标。

2、处理 OCR 结果,构建数字坐标数组

两种存储格式,大家按需选择。

格式 A:键值对,arr["1"] = {x,y},数字文本作为下标

复制代码
Dim arr = {null}
Dim tb = OcrEx(113,394,427,612)
TracePrint encode.TableToJson(tb)
For i = 1 To Len(tb)
	TracePrint tb[i]["text"]
	//判断识别内容是不是数字,是数字就存入数组
	If IsNumeric(tb[i]["text"]) Then
 		arr[tb[i]["text"]] = {tb[i]["x"],tb[i]["y"]}
	End If
Next
TracePrint encode.TableToJson(arr)

输出效果:

复制代码
[[376,486],[298,486],[139,410],[218,486],[296,559],[138,484],[218,557],[218,411],[296,411],[139,558]]

格式 B:数组下标对应数字,arr[1]={x,y},我个人更推荐这种写法

注意:按键精灵数组下标默认从 1 开始,数字 0 会存放在 arr (0) 位置。

复制代码
Dim arr = {null}
Dim tb = OcrEx(113,394,427,612)
TracePrint encode.TableToJson(tb)
For i = 1 To Len(tb)
	TracePrint tb[i]["text"]
	If IsNumeric(tb[i]["text"]) Then
        arr(cint(tb[i]["text"])) = {tb[i]["x"],tb[i]["y"]}
	End If
Next
TracePrint encode.TableToJson(arr)

3、拆分数字,循环点击按钮

拿到数字坐标映射数组之后,同样拆分输入字符串,逐个取出坐标执行点击。

复制代码
Dim arr = {null}
Dim tb = OcrEx(113,394,427,612)
For i = 1 To Len(tb)
	If IsNumeric(tb[i]["text"]) Then
        arr(cint(tb[i]["text"])) = {tb[i]["x"],tb[i]["y"]}
	End If
Next

Dim num = "66"
Dim n
For i = 1 To Len(num)
	n = cint(Mid(num, i, 1))
	TracePrint arr[n][1],arr[n][2]
	tap arr[n][1],arr[n][2]
	Delay 300
Next

优缺点:

✅ 无需准备图片素材,键盘样式小幅改动也能兼容;

❌ OCR 识别受字体、清晰度影响,偶尔识别出错,需要设置置信度过滤低可信度结果。

两种方案怎么选?

  1. 界面稳定,数字按钮样式不变 → 优先找图法,识别准确率高,适合长期使用;

  2. 不想做截图素材、界面经常微调 → 优先 OCR 识别法,开发速度更快,需要做好容错判断。

常见踩坑总结

  1. 待输入数字一定要转字符串,如果是数字类型,Len()函数获取不到字符长度;

  2. 找图的相似度参数,根据实际界面调整,不要设置过高或者过低;

  3. OCR 务必框选精准,只框选键盘区域,减少无关文字干扰识别;

  4. 每次点击之后加上延时,模拟真人操作,防止操作过快被系统风控。

感谢作者三分钟学堂的思路分享,按键精灵提供了专业级的安卓脚本开发软件。它支持可视化的安卓脚本录制,也允许进阶用户进行手动的安卓脚本编写与安卓脚本制作。最核心的优势在于其免root脚本开发能力------基于安卓系统的无障碍脚本服务,无需获取Root权限即可实现安卓自动连点、模拟滑动等操作。开发完成的脚本,还可通过内置的安卓脚本打包工具,一键打包成独立APK,方便分享或商用。针对苹果脚本(iOS脚本)需求,按键精灵也推出了对应的iOS脚本开发软件。在越狱环境下,它提供了完整的iOS越狱脚本开发方案,支持iOS越狱脚本录制、iOS越狱脚本编写、iOS越狱脚本制作,并可通过iOS越狱脚本打包工具生成文件。同时,它也内置了iOS连点器功能,让iOS自动连点变得简单易行。无论是安卓还是苹果,无论你需要的是简单的手机自动连点,还是复杂的手游脚本,按键精灵都提供了从开发、录制、编写到打包的完整工具链,是移动端自动化利器。

相关推荐
我命由我123451 小时前
Compose Codelab 学习 - Compose 中的基本布局
android·java·java-ee·kotlin·android studio·android-studio·android runtime
鲁邦通物联网1 小时前
充电站底层脱机DLB引擎解构:基于Linux调度的边缘计算网关并发控制实战
linux·运维·人工智能·边缘计算·边缘计算网关·5g数采·工业级边缘计算网关
2601_965798471 小时前
Boutique Business Consulting WordPress Architecture & SEO Setup
android·theme·wordpress
便利店10242 小时前
边界与远程:墙、洞与加密通道
运维·服务器·防火墙·acl·nat
三少爷的鞋2 小时前
Android 架构进阶:为什么项目越大,越需要把对象创建权拿走
android
Zhang~Ling2 小时前
Linux多线程互斥锁:从现象到原理解析
linux·运维·网络
KaiwuDB2 小时前
KaiwuDB 运维实战 03:双副本仲裁节点部署与高可用实践
运维·时序数据库·raft·kaiwudb·数据库运维·双副本高可用·仲裁节点
杜子麟4 小时前
Android studio模拟器离线安装
android·macos·android studio
年小个大6 小时前
受 go-zero 启发,我给 Flutter 整了套 MVI-BLoC 脚手架
android·flutter·架构