• Auto.js中的脚本引擎


    1. 在脚本引擎中运行脚本

    1. // 通过脚本引擎调用脚本程序,可添加相关配置
    2. // engines.execScript(name, script,[config])
    3. engines.execScript('name','toast("你好");',{
    4. // 延迟时间
    5. delay: 2000,
    6. // 循环次数
    7. loopTimes: 3,
    8. // 间隔时间
    9. interval: 2000,
    10. });

    要执行的脚本程序可以单独封装,执行时转换为字符串。

    1. // 封装执行的程序
    2. function func(){
    3. toast('你好');
    4. };
    5. engines.execScript('name','func();\n'+func.toString());

    封装一个脚本执行方法,可以在执行脚本时加入参数。

    1. // 封装执行方法
    2. function exec(action, args){
    3. var params = args || {};
    4. var temp = action.toString();
    5. var reg = /function\s*(\w*)/i;
    6. var matches = reg.exec(temp);
    7. var name =matches[1];
    8. engines.execScript(name,name + "(" + JSON.stringify(params) + ");\n" + action.toString());
    9. };
    10. // 要执行的函数
    11. function add(args){
    12. toast(args.a + args.b);
    13. };
    14. // 在脚本中执行
    15. exec(add,{a: 2,b:2});

    2. 在脚本引擎中运行js文件

    1. // 在脚本引擎中运行js文件
    2. // engines.execScriptFile(path,[config]);
    3. engines.execScriptFile('/sdcard/script.js',{
    4. // 延迟时间
    5. delay: 2000,
    6. // 循环次数
    7. loopTimes: 3,
    8. // 间隔时间
    9. interval: 1000
    10. })

    3. 在脚本引擎中运行录制的脚本文件

    1. // 在脚本引擎中运行录制的脚本文件
    2. // engines.execAutoFile(path,[config]);
    3. engines.execAutoFile('/sdcard/脚本/1.auto',{
    4. // 延迟时间
    5. delay: 2000,
    6. // 循环次数
    7. loopTimes: 3,
    8. // 间隔时间
    9. interval: 1000
    10. })

    4. 脚本引擎控制方法

    1. 停止所有正在运行的脚本,包括当前脚本自身;

    engines.stopAll()

    2. 停止所有正在运行的脚本并显示停止的脚本数量,包括当前脚本自身;

    engines.stopAllAndToast()

    3. 返回当前脚本的引擎对象;

    engines.myEngine()

    4. 返回当前所有正在运行的脚本的所有引擎数组;

    engines.all()

    5. 脚本执行对象-ScriptExecution

    执行脚本时返回的对象,可以通过它获取执行的引擎、配置等,也可以停止这个执行。

    1. 获取执行该脚本的脚本引擎对象;

    ScriptExecution.getEngine()

    2. 获取该脚本的运行配置;

    ScriptExecution.getConfig()

    1. var executionObject= engines.execScriptFile('/sdcard/脚本/script.js');
    2. sleep(1500);
    3. console.log("获取引擎对象:"+ executionObject.getEngine());
    4. console.log("获取引擎配置:"+ executionObject.getConfig());

    6. 脚本引擎对象-ScriptEngine

    1. 停止脚本引擎的执行;

    ScriptEngine.forceStop()

    2. 获取脚本执行的路径;

    ScriptEngine.cwd()

    3. 获取脚本引擎正在执行的脚本对象;

    ScriptEngine.getSource()

    1. var executionObject = engines.execScriptFile('/sdcard/脚本/script.js');
    2. sleep(1500);
    3. // 获取执行对象的脚本引擎
    4. var engineObject = executionObject.getEngine();
    5. sleep(3000);
    6. // 停止脚本引擎的执行
    7. engineObject.forceStop();
    8. // 获取脚本执行的路径
    9. console.log(engineObject.cwd());
    10. // /storage/emulated/0/脚本
    11. // 获取脚本引擎正在执行的脚本对象
    12. console.log(engineObject.getSource());
    13. // /sdcard/脚本/script.js

    当执行的脚本不是文件,而是一段程序代码时,返回的是执行脚本时所命名的名称。

    1. var executionObject = engines.execScript("script","toast('hello world');sleep(30000)");
    2. sleep(1500);
    3. // 获取执行对象的脚本引擎
    4. var engineObject = executionObject.getEngine();
    5. sleep(3000);
    6. // 停止脚本引擎的执行
    7. engineObject.forceStop();
    8. // 获取脚本执行的路径
    9. console.log(engineObject.cwd());
    10. // /storage/emulated/0/脚本
    11. // 获取脚本引擎正在执行的脚本对象
    12. console.log(engineObject.getSource());
    13. // script.js

    7. 脚本引擎之间的通信

    主进程向子进程发送消息用emit()事件发送。

    1. // ScriptEngine.emit(eventName,[...args])
    2. // 运行脚本
    3. var obj = engines.execScriptFile("/sdcard/脚本/script.js");
    4. // 等待脚本启动
    5. sleep(2000);
    6. // 向该脚本发送事件
    7. obj.getEngine().emit("say", "你好",'世界');

    子进程通过监听事件接收消息。

    1. // /sdcard/脚本/script.js
    2. // 监听say事件
    3. events.on("say", function(words1,words2){
    4. toastLog(words1 + "--" + words2);
    5. // "你好--世界"
    6. });
    7. // 保持脚本运行
    8. setInterval(()=>{}, 1000);

    8. 脚本引擎配置-ScriptConfig

    1. 获取延迟执行的毫秒数;

    executionObject.getConfig().delay

    2. 获取循环运行时两次运行之间的时间间隔;

    executionObject.getConfig().interval

    3. 获取循环运行次数;

    executionObject.getConfig().loopTimes

    4. 返回一个字符串数组表示脚本运行时模块寻找的路径;

    executionObject.getConfig().getPath()

    1. // 运行脚本
    2. var executionObject= engines.execScriptFile("/sdcard/脚本/script.js",{
    3. loopTimes: 10,
    4. interval: 3000,
    5. });
    6. // 等待脚本启动
    7. sleep(2000);
    8. console.log(executionObject.getConfig().interval);
    9. // 3000
    10. console.log(executionObject.getConfig().loopTimes);
    11. // 10

  • 相关阅读:
    【牛客网面试必刷TOP101】二叉树篇(三)
    go语言之内存对齐
    基于5G边缘网关的储能在线监测方案
    Linux——进程间通信(管道及共享内存)
    程序员如何成长
    2. NLP基础 : 分词
    从零开始写 Docker(十二)---实现 mydocker stop 停止容器
    通过docker部署jenkins
    【python】遵守 robots.txt 规则的数据爬虫程序
    文心大模型4.0正式发布!来看看这届百度世界有啥亮点
  • 原文地址:https://blog.csdn.net/weixin_40629244/article/details/126266700