天天看点

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

'此函数用紫猫插件方法,插件下载地址 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环境下,建议启用按键精灵输入法。