按键精灵whileevent放不进while吗

如何通过界面按钮启动脚本,以及结束脚本脚本为死循环... 如何通过界面按钮启动脚本,以及结束脚本

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。


开线程,不要在事件内死循环。

线程不是sub 吗,不可以并列的···
不过我解决了问题,可以直接通过按键操作,,把按键写在bottom里就好了,另不清楚的亲可以加我哈哈哈

 sub AA
End Sub
这是子程序定义,开启线程是BeginThread,不是用Call,你在按钮事件写上ID=BeginThread(AA)就可以了,结束线程是用StopThread ID,这个ID是你开启线程的时候等号前面那个变量。要注意,线程开启和Call是不一样的,线程开启后,里面的变量都是独立的,和外面的无关。

实现按键精灵的思路主要有三种:

1.AccessibilityService辅助类,这个类是设计用来帮助残障人士使用android 手机的,我们可以利用它实现按键精灵的部分功能,因为利用这个类只能找到页面的控件,然后对控件进行模拟点击,不能实现对屏幕的某个位置进行点击

2.Instrumentation方法,这种方法确实可以点击屏幕上任何位置,而且点击事件可以生效,但是退出程序就不能进行了,程序出现错误,提示没有INJECT_EVENTS权限,在如今第三方Rom横行的今天,几乎不可能获取到这个权限。

3.adb shell命令的方法,这种方法很通用,能在所有android设备上使用,缺点是需要手机需要root,程序需要获取到root权限,才能实现点击;

我们经常使用Android adb shell命令在电脑上查看与之相连的Android设备各种信息,今天我们选择用adb shell 命令来实现一种最为通用,兼容性最强的按键精灵;

getevent用于获取当前系统input设备的一些参数和实时事件的数据

sendevent用于发送input事件,用来模拟物理按键的点击和屏幕任意位置的点击

有耳机孔,物理按键,gps ,屏幕输入等, 我们真正需要的是name :“synaptics—rmi—ts” 这个屏幕输入设备 如下图:

image我们观察上图中的abs 信息 其中的 0035 和 0036两项 max值 (注意:也许你的手机 两项的max信息是一个很大的值,不要担心,你只要网上搜索一下你手机真实的分辨率信息,两者分别相除就可以得到一个倍数,要记好这个倍数) 就是手机屏幕的分辨率信息,这两项的信息相当重要,是我们接下来工作的基础;

3.观察点击屏幕后getevent输出的坐标信息;

接下来点击屏幕你会发现屏幕上滚动了十几行复杂的数据,如下图: image

无需担心过多,我们只要观察 ,第三列 0035 和 0036 分别对应的信息,这就是刚才你点击的屏幕所对应 16 进制的坐标信息 0x3a5 和0x568(还记得上面的那个倍数吗,如果上一步你得到的不是真实的分辨率信息,不要忘了,要除以那个倍数,才是真实的16进制坐标信息奥) ,这正是我们所需要的,这个坐标正好对应着我手机上的浏览器图标,也就是说,一会我们会实现模拟点击启动浏览器(你可以对应一个你想打开应用的图标);

4.利用input 向设备发送模拟按键事件

adb shell命令输入 input tap 933 1384 你会发现我们已经成功启动了浏览器,到这里我们已经可以再 windows 系统实现模拟点击事件, 可是如何才能在代码里用呢,别着急接着往下看:

1.获取root权限,发送input 键盘点击事件:

需要先root你的手机

你可以把具体的逻辑卸载一个服务里,可以轻松实现录制脚本,运行点击命令,至此,实现一个自己的按键精灵是不是很容易呢;

 
反正不高深的技术,直接上代码了。


结果全部用的标签,上面全部是输入框,结果1对应标签1,其他都是这个规律。

我要回帖

更多关于 按键精灵while 的文章

 

随机推荐