autojs教程(1)
概述
- app: 应用。启动应用,卸载应用,使用应用查看、编辑文件、访问网页,发送应用间广播等。
- console: 控制台。记录运行的日志、错误、信息等。
- device: 设备。获取设备屏幕宽高、系统版本等信息,控制设备音量、亮度等。
- engines: 脚本引擎。用于启动其他脚本。
- events: 事件与监听。按键监听,通知监听,触摸监听等。
- floaty: 悬浮窗。用于显示自定义的悬浮窗。
- files: 文件系统。文件创建、获取信息、读写。
- http: HTTP。发送HTTP请求,例如GET, POST等。
- images, colors: 图片和图色处理。截图,剪切图片,找图找色,读取保存图片等。
- keys: 按键模拟。比如音量键、Home键模拟等。
- shell: Shell命令。
- threads: 多线程支持。
- ui: UI界面。用于显示自定义的UI界面,和用户交互。
APP
app模块提供一系列函数,用于使用其他应用、与其他应用交互。例如发送意图、打开文件、发送邮件等。
app.launchApp(appName)
appName
应用名称
通过应用名称启动应用。如果该名称对应的应用不存在,则返回false; 否则返回true。如果该名称对应多个应用,则只启动其中某一个。
该函数也可以作为全局函数使用。
launchApp("Auto.js");
app.launch(packageName)
packageName
应用包名
通过应用包名启动应用。如果该包名对应的应用不存在,则返回false;否则返回true。
该函数也可以作为全局函数使用。
//启动微信
launch("com.tencent.mm");
app.getPackageName(appName)
appName
应用名称
获取应用名称对应的已安装的应用的包名。如果该找不到该应用,返回null;如果该名称对应多个应用,则只返回其中某一个的包名。
该函数也可以作为全局函数使用。
var name = getPackageName("QQ"); //返回"com.tencent.mobileqq"
app.getAppName(packageName)
packageName
应用包名
获取应用包名对应的已安装的应用的名称。如果该找不到该应用,返回null。
该函数也可以作为全局函数使用。
var name = getAppName("com.tencent.mobileqq"); //返回"QQ"
Console
console.show()#
显示控制台。这会显示一个控制台的悬浮窗(需要悬浮窗权限)。
console.hide()#
隐藏控制台悬浮窗。
console.clear()
清空控制台。
console.log([data][, ...args])s)
data
...args
打印到控制台,并带上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) 中的代替值(参数都会传给 util.format())。
const count = 5;
console.log('count: %d', count);
// 打印: count: 5 到 stdout
console.log('count:', count);
// 打印: count: 5 到 stdout
滑动和点击
click(x, y)
x
要点击的坐标的x值y
要点击的坐标的y值
模拟点击坐标(x, y),并返回是否点击成功。只有在点击执行完成后脚本才继续执行。
一般而言,只有点击过程(大约150毫秒)中被其他事件中断(例如用户自行点击)才会点击失败。
使用该函数模拟连续点击时可能有点击速度过慢的问题,这时可以用press()
函数代替。
longClick(x, y)
x
要长按的坐标的x值y
要长按的坐标的y值
模拟长按坐标(x, y), 并返回是否成功。只有在长按执行完成(大约600毫秒)时脚本才会继续执行。
一般而言,只有长按过程中被其他事件中断(例如用户自行点击)才会长按失败。
press(x, y, duration)
x
要按住的坐标的x值y
要按住的坐标的y值duration
按住时长,单位毫秒
模拟按住坐标(x, y), 并返回是否成功。只有按住操作执行完成时脚本才会继续执行。
如果按住时间过短,那么会被系统认为是点击;如果时长超过500毫秒,则认为是长按。
一般而言,只有按住过程中被其他事件中断才会操作失败。
一个连点器的例子如下:
//循环100次
for(var i = 0; i < 100; i++){
//点击位置(500, 1000), 每次用时1毫秒
press(500, 1000, 1);
}
swipe(x1, y1, x2, y2, duration)
x1
滑动的起始坐标的x值y1
滑动的起始坐标的y值x2
滑动的结束坐标的x值y2
滑动的结束坐标的y值duration
滑动时长,单位毫秒
模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。只有滑动操作执行完成时脚本才会继续执行。
一般而言,只有滑动过程中被其他事件中断才会滑动失败。
监听
事件: 'notification'
notification
通知对象
例如:
observeNotification();
events.on("notification", function(n){
log("收到新通知:\n 标题: %s, 内容: %s, \n包名: %s", n.getTitle(), n.getText(), n.getPackageName());
});
Notification.click()
点击该通知。例如对于一条QQ消息,点击会进入具体的聊天界面。
Notification.delete()
删除该通知。该通知将从通知栏中消失