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

猜你喜欢

转载自blog.csdn.net/weixin_40629244/article/details/126266700
今日推荐