当前位置: 首页 > 工具软件 > InputText > 使用案例 >

InputText输入不进去或者输入法老是跳出来

酆俊远
2023-12-01

'此函数用紫猫插件方法,插件下载地址 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

 

编写kepress_input函数代替系统的inputtxt

 

在使用按键精灵手机助手的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环境下,建议启用按键精灵输入法。

 类似资料: