Auto.js中的脚本引擎
Posted aiguangyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Auto.js中的脚本引擎相关的知识,希望对你有一定的参考价值。
1. 在脚本引擎中运行脚本
// 通过脚本引擎调用脚本程序,可添加相关配置
// engines.execScript(name, script,[config])
engines.execScript('name','toast("你好");',
// 延迟时间
delay: 2000,
// 循环次数
loopTimes: 3,
// 间隔时间
interval: 2000,
);
要执行的脚本程序可以单独封装,执行时转换为字符串。
// 封装执行的程序
function func()
toast('你好');
;
engines.execScript('name','func();\\n'+func.toString());
封装一个脚本执行方法,可以在执行脚本时加入参数。
// 封装执行方法
function exec(action, args)
var params = args || ;
var temp = action.toString();
var reg = /function\\s*(\\w*)/i;
var matches = reg.exec(temp);
var name =matches[1];
engines.execScript(name,name + "(" + JSON.stringify(params) + ");\\n" + action.toString());
;
// 要执行的函数
function add(args)
toast(args.a + args.b);
;
// 在脚本中执行
exec(add,a: 2,b:2);
2. 在脚本引擎中运行js文件
// 在脚本引擎中运行js文件
// engines.execScriptFile(path,[config]);
engines.execScriptFile('/sdcard/script.js',
// 延迟时间
delay: 2000,
// 循环次数
loopTimes: 3,
// 间隔时间
interval: 1000
)
3. 在脚本引擎中运行录制的脚本文件
// 在脚本引擎中运行录制的脚本文件
// engines.execAutoFile(path,[config]);
engines.execAutoFile('/sdcard/脚本/1.auto',
// 延迟时间
delay: 2000,
// 循环次数
loopTimes: 3,
// 间隔时间
interval: 1000
)
4. 脚本引擎控制方法
1. 停止所有正在运行的脚本,包括当前脚本自身;
engines.stopAll()
2. 停止所有正在运行的脚本并显示停止的脚本数量,包括当前脚本自身;
engines.stopAllAndToast()
3. 返回当前脚本的引擎对象;
engines.myEngine()
4. 返回当前所有正在运行的脚本的所有引擎数组;
engines.all()
5. 脚本执行对象-ScriptExecution
执行脚本时返回的对象,可以通过它获取执行的引擎、配置等,也可以停止这个执行。
1. 获取执行该脚本的脚本引擎对象;
ScriptExecution.getEngine()
2. 获取该脚本的运行配置;
ScriptExecution.getConfig()
var executionObject= engines.execScriptFile('/sdcard/脚本/script.js');
sleep(1500);
console.log("获取引擎对象:"+ executionObject.getEngine());
console.log("获取引擎配置:"+ executionObject.getConfig());
6. 脚本引擎对象-ScriptEngine
1. 停止脚本引擎的执行;
ScriptEngine.forceStop()
2. 获取脚本执行的路径;
ScriptEngine.cwd()
3. 获取脚本引擎正在执行的脚本对象;
ScriptEngine.getSource()
var executionObject = engines.execScriptFile('/sdcard/脚本/script.js');
sleep(1500);
// 获取执行对象的脚本引擎
var engineObject = executionObject.getEngine();
sleep(3000);
// 停止脚本引擎的执行
engineObject.forceStop();
// 获取脚本执行的路径
console.log(engineObject.cwd());
// /storage/emulated/0/脚本
// 获取脚本引擎正在执行的脚本对象
console.log(engineObject.getSource());
// /sdcard/脚本/script.js
当执行的脚本不是文件,而是一段程序代码时,返回的是执行脚本时所命名的名称。
var executionObject = engines.execScript("script","toast('hello world');sleep(30000)");
sleep(1500);
// 获取执行对象的脚本引擎
var engineObject = executionObject.getEngine();
sleep(3000);
// 停止脚本引擎的执行
engineObject.forceStop();
// 获取脚本执行的路径
console.log(engineObject.cwd());
// /storage/emulated/0/脚本
// 获取脚本引擎正在执行的脚本对象
console.log(engineObject.getSource());
// script.js
7. 脚本引擎之间的通信
主进程向子进程发送消息用emit()事件发送。
// ScriptEngine.emit(eventName,[...args])
// 运行脚本
var obj = engines.execScriptFile("/sdcard/脚本/script.js");
// 等待脚本启动
sleep(2000);
// 向该脚本发送事件
obj.getEngine().emit("say", "你好",'世界');
子进程通过监听事件接收消息。
// /sdcard/脚本/script.js
// 监听say事件
events.on("say", function(words1,words2)
toastLog(words1 + "--" + words2);
// "你好--世界"
);
// 保持脚本运行
setInterval(()=>, 1000);
8. 脚本引擎配置-ScriptConfig
1. 获取延迟执行的毫秒数;
executionObject.getConfig().delay
2. 获取循环运行时两次运行之间的时间间隔;
executionObject.getConfig().interval
3. 获取循环运行次数;
executionObject.getConfig().loopTimes
4. 返回一个字符串数组表示脚本运行时模块寻找的路径;
executionObject.getConfig().getPath()
// 运行脚本
var executionObject= engines.execScriptFile("/sdcard/脚本/script.js",
loopTimes: 10,
interval: 3000,
);
// 等待脚本启动
sleep(2000);
console.log(executionObject.getConfig().interval);
// 3000
console.log(executionObject.getConfig().loopTimes);
// 10
以上是关于Auto.js中的脚本引擎的主要内容,如果未能解决你的问题,请参考以下文章