- // 通过脚本引擎调用脚本程序,可添加相关配置
- // 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});
- // 在脚本引擎中运行js文件
- // engines.execScriptFile(path,[config]);
-
- engines.execScriptFile('/sdcard/script.js',{
- // 延迟时间
- delay: 2000,
- // 循环次数
- loopTimes: 3,
- // 间隔时间
- interval: 1000
- })
- // 在脚本引擎中运行录制的脚本文件
- // engines.execAutoFile(path,[config]);
-
- engines.execAutoFile('/sdcard/脚本/1.auto',{
- // 延迟时间
- delay: 2000,
- // 循环次数
- loopTimes: 3,
- // 间隔时间
- interval: 1000
- })
1. 停止所有正在运行的脚本,包括当前脚本自身;
engines.stopAll()
2. 停止所有正在运行的脚本并显示停止的脚本数量,包括当前脚本自身;
engines.stopAllAndToast()
3. 返回当前脚本的引擎对象;
engines.myEngine()
4. 返回当前所有正在运行的脚本的所有引擎数组;
engines.all()
执行脚本时返回的对象,可以通过它获取执行的引擎、配置等,也可以停止这个执行。
1. 获取执行该脚本的脚本引擎对象;
ScriptExecution.getEngine()
2. 获取该脚本的运行配置;
ScriptExecution.getConfig()
- var executionObject= engines.execScriptFile('/sdcard/脚本/script.js');
-
- sleep(1500);
-
- console.log("获取引擎对象:"+ executionObject.getEngine());
-
- console.log("获取引擎配置:"+ executionObject.getConfig());
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
主进程向子进程发送消息用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);
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