'此函数用紫猫插件方法,插件下载地址 https://zimaoxy.com/b/t-77-1-1.html
'下载后请解压所有文件到按键精灵安装目录的Plugin文件夹中。
Import "zm.luae" //导入插件,只需执行一次
zm.Init //初始化插件,只需执行一次
'例子1 连接模拟器或者手机时测试调用
Call setIme("") '调试时可写可不写此命令
'例子2 打包时调用
Dim 设备的输入法=getNowIme() '获取当前输入法,把没有设置输入法前的输入法保存下来
Call setIme("cishidejiaoben") '设置小精灵输入法,填写的参数必须是作者自己打包时的包名
Delay 200
Tap X,Y '激活输入框 必须调用 setIme 函数 再激活输入框(因为点击输入框时输入法会激活,要提前设置好输入法)
Delay 500
InputText "测试输入" '向输入框输入内容
Delay 500
call installtypewriting(设备的输入法) '把之前没有设置输入法前的输入法设置回来,此命令可配合OnScriptExit使用
'参数:packageName 是辅助自身包名 作者打包时填写的包名
'使用模拟器连接小精灵测试时辅助包名为com.cyjh.mobileanjian(此包名是安卓按键APK的,调试需要的)
'测试时可以用 call setIme("") 方式做测试 填写空字符串 默认用调试的包名com.cyjh.mobileanjian
'打包时请记得使用 call setIme("此处填写打包时填写的包名") 方式打包
'设置脚本输入法
Function setIme(packageName)
Dim nowPackage,packageNameIme
If packageName="" Then
packageName="com.cyjh.mobileanjian"
End If
nowPackage = zm.Execute("settings get secure default_input_method|grep "&packageName)
If nowPackage = "" Then
packageNameIme = zm.Execute("ime list -s -a |grep " & packageName & "|head -n 1")
If packageNameIme = "" Then
ShowMessage "获取输入法失败,包名可能错误"
Else
zm.Execute("settings put secure default_input_method "&packageNameIme)
End If
End If
TracePrint packageName //当前辅助包名
TracePrint nowPackage //当前输入法是否为辅助输入法
TracePrint packageNameIme //辅助输入法
End Function
//获取当前输入法
Function getNowIme()
getNowIme = zm.Execute("settings get secure default_input_method")
End Function
//获取脚本输入法
Function getNowPackageIme(packageName)
getNowPackageIme = zm.Execute("ime list -s -a |grep " & packageName & "|head -n 1")
End Function
//设置输入法
Function installtypewriting(typewriting)
zm.Execute("settings put secure default_input_method "&typewriting)
End Function
在使用按键精灵手机助手的InputText函数的时候,经常是我们在调试的时候万无一失,可一到了用户那里,就各种奇葩的问题出现。
比如输入不了,或者和用户设备里面原有的输入法打架, 总之各种异常。
今天教大家一个方法,就是用下面的这个函数,利用KeyPress模拟按下键盘来完成输入
-------------------------------
--通过按键输入
--s: 要输入的文本,不能有中文
--t: [可选]每输入一个字符停顿的时间(毫秒)
function KeyPress_Input(s,t)
if s==nil then
print("【警告】KeyPress_Input:没有输入内容")
else
local str = s..""
local i = 0
local x = 0
--根据数据的长度截取key的前几个字符
for i = 0, #str, 1 do
if (string.sub(str, x, x))==" " then --如果有空格
LuaAuxLib.KeyPress("Space")--按下空格
else
LuaAuxLib.KeyPress((string.sub(str, x, x)))
end
delay(t)
x=x+1
end
end
end
QMPlugin.KeyPress_Input=KeyPress_Input
将上面的函数加到自己的LUA文件里面就可以调用啦。
调用方法如下
//输入密码
InputText ""//关闭第三方输入法
Delay 100 //等待第三方输入法消失
InputText ""//确保关闭第三方输入法
[LUAname].KeyPress_Input "CSDN is the best website in China"
InputText ""//短时间内不让第三方输入法重启,防止影响上面的输入
Delay 100
InputText ""//短时间内不让第三方输入法重启
Delay 1000
上面的[LUAname]要换成你存放函数的Lua文件的名称。
有点可惜的是这个函数并不能输入中文,不过用来自动输入账号和密码之类没有在中文的字符串绰绰有余。
root环境下,建议启用按键精灵输入法。