advancedEngines.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. module.exports=(()=>{
  2. var advancedEngines = {}
  3. advancedEngines.execScriptFile=function(path,args,config){
  4. let ss=com.stardust.autojs.script.JavaScriptFileSource(java.io.File(files.path(path)))
  5. return execute(ss,args,config);
  6. }
  7. advancedEngines.execScript=function(name,script,args,config){
  8. let ss=com.stardust.autojs.script.StringScriptSource(name,script)
  9. return execute(ss,args,config);
  10. }
  11. advancedEngines.execAutoScript=function(path,args,config){
  12. let ss=com.stardust.autojs.script.AutoFileSource(java.io.File(files.path(path)))
  13. return execute(ss,args,config);
  14. }
  15. var execute = function(scriptSource,args,config) {
  16. args=args||{}
  17. config=config||{}
  18. importPackage(com.stardust.autojs.execution)
  19. let listener=
  20. ScriptExecutionListener({
  21. onStart:
  22. function(execution) {
  23. let topScope = execution.getEngine().getRuntime().getTopLevelScope()
  24. let ScriptableObject = org.mozilla.javascript.ScriptableObject
  25. for (let key in args) {
  26. ScriptableObject.putProperty(topScope, key, args[key])
  27. }
  28. }
  29. })
  30. if(!isPro()){
  31. //普通aj
  32. let field=runtime.engines.getClass().getDeclaredField("mEngineService")
  33. field.setAccessible(true)
  34. let service=field.get(runtime.engines)
  35. field.setAccessible(false)
  36. service.execute(scriptSource,listener,fillConfig(config))
  37. }else return runtime.engines.execute(null,ScriptExecutionTask(scriptSource,listener,fillConfig(config)));
  38. }
  39. var fillConfig = function(c) {
  40. var config = new com.stardust.autojs.execution.ExecutionConfig();
  41. c = c || {};
  42. c.path = c.path || files.cwd();
  43. if (c.path) {
  44. config.workingDirectory = c.path;
  45. }
  46. config.delay = c.delay || 0;
  47. config.interval = c.interval || 0;
  48. config.loopTimes = (c.loopTimes === undefined) ? 1 : c.loopTimes;
  49. if (c.arguments) {
  50. var arguments = c.arguments;
  51. for (var key in arguments) {
  52. if (arguments.hasOwnProperty(key)) {
  53. config.setArgument(key, arguments[key]);
  54. }
  55. }
  56. }
  57. if(isPro())config.projectConfig = engines.myEngine().getTag("execution.config").projectConfig;
  58. return config;
  59. }
  60. function isPro(){
  61. return app.autojs.versionName.toLowerCase().indexOf("pro")!=-1
  62. }
  63. return advancedEngines
  64. })()