B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 5|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

Æ»¹û½Å±¾Ëæ»úÊýʵÓÃʾÀý

[¸´ÖÆÁ´½Ó]

1067

Ö÷Ìâ

1072

Ìû×Ó

7545

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7545
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
Æ»¹û½Å±¾Ëæ»úÊýʵÓÃʾÀý
Æ»¹û½Å±¾Ëæ»úÊýʵÓÃʾÀý B2BÍøÂçÈí¼þ

Æ»¹û½Å±¾Ëæ»úÊýʵÓÃʾÀý B2BÍøÂçÈí¼þ

  1. /**
  2. * ============================================
  3. * AIWROK ÖÇÄÜÓ¦ÓùÜÀíÆ÷Pro Max
  4. * °æ±¾£º3.0.1 (Bug Fix ÐÞ¸´°æ)
  5. * ƽ̨£ºiOS (AIWROK)
  6. * QQ Ⱥ£º711841924 Ⱥһ£¬Æ»¹ûÄÚ²âȺ 528816639
  7. *
  8. * 🐛 ÐÞ¸´ÄÚÈÝ:
  9. * - ÐÞ¸´ Detect.text ÊôÐÔ·ÃÎÊ´íÎó (getText -> .text)
  10. * - ÔöÇ¿¿ÕÖµ¼ì²éºÍ´íÎó´¦Àí
  11. * - ÓÅ»¯ AI ·ÖÎöÄ£¿é
  12. * ============================================
  13. *
  14. * 🌟 ºËÐŦÄÜÌØÐÔ:
  15. * 1. 🎯 OCR ÖÇÄÜʶ±ð + ͼÏñʶ±ð˫ģʽ
  16. * 2. 📊 H5 ¿ÉÊÓ»¯¿ØÖÆÃæ°å (ʵʱÈÕÖ¾ + Êý¾Ýͳ¼Æ)
  17. * 3. 🤖 ×Ô¶¯»¯ÈÎÎñÁ÷³ÌÒýÇæ
  18. * 4. 🧠 ÖÇÄܾö²ßϵͳ (»ùÓÚ¸ÅÂʺÍÌõ¼þ)
  19. * 5. 📱 Ó¦ÓùÜÀí (Æô¶¯/Çл»/¼à¿Ø)
  20. * 6. 🎮 ÊÖÊÆ²Ù×÷ (»¬¶¯/³¤°´/¶àµã´¥¿Ø)
  21. * 7. ⚙️ ÅäÖÃÖÐÐÄ (¶¯Ì¬²ÎÊýµ÷Õû)
  22. * 8. 🔔 ʼþ֪ͨϵͳ (Toast/ÈÕÖ¾/»Øµ÷)
  23. * 9. 💾 Êý¾Ý³Ö¾Ã»¯ (Map ´æ´¢/ÀúÊ·¼Ç¼)
  24. * 10. 🛡️ ´íÎó´¦ÀíÓë×ÔÓú»úÖÆ
  25. *
  26. * 📖 ÊÊÓó¡¾°:
  27. * - Ó¦ÓÃ×Ô¶¯»¯²âÊÔ
  28. * - ÅúÁ¿ÈÎÎñ´¦Àí
  29. * - ÖÇÄܸ¨Öú¹¤¾ß
  30. * - ÓÎÏ·×Ô¶¯»¯
  31. * - Êý¾Ý²É¼¯
  32. */

  33. // ==================== µÚÒ»²¿·Ö£ºÈ«¾ÖÅäÖÃÖÐÐÄ ====================

  34. var GlobalConfig = {
  35.     // »ù´¡ÐÅÏ¢
  36.     appName: "ÖÇÄÜÓ¦ÓùÜÀíÆ÷Pro Max",
  37.     version: "3.0.1",  // Bug Fix °æ±¾
  38.     author: "AIWROK ¿ª·¢ÍŶÓ",
  39.    
  40.     // ÔËÐвÎÊý
  41.     debugMode: true,          // µ÷ÊÔģʽ
  42.     logEnabled: true,         // ÈÕÖ¾¿ª¹Ø
  43.     autoRetry: true,          // ×Ô¶¯ÖØÊÔ
  44.     maxRetryTimes: 3,         // ×î´óÖØÊÔ´ÎÊý
  45.     defaultTimeout: 5000,     // ĬÈϳ¬Ê± (ms)
  46.    
  47.     // OCR ÅäÖÃ
  48.     ocrRegion: [0, 0, 1, 1],  // ĬÈÏÈ«ÆÁ [left, top, right, bottom]
  49.     ocrConfidence: 0.6,       // ÖÃÐŶÈãÐÖµ
  50.     ocrLockEnabled: false,    // OCR Ëø¶¨¿ª¹Ø
  51.    
  52.     // µã»÷ÅäÖÃ
  53.     clickDelay: 500,          // µã»÷ÑÓ³Ù (ms)
  54.     clickMode: "center",      // µã»÷ģʽ£º"center" | "random"
  55.    
  56.     // »¬¶¯ÅäÖÃ
  57.     swipeDuration: 300,       // »¬¶¯³ÖÐøÊ±¼ä (ms)
  58.     swipePause: 1000,         // »¬¶¯¼ä¸ô (ms)
  59.    
  60.     // ¸ß¼¶¹¦ÄÜ
  61.     enableAI: true,           // AI ÖÇÄܾö²ß
  62.     enableStatistics: true,   // ͳ¼Æ¹¦ÄÜ
  63.     enableHistory: true,      // ÀúÊ·¼Ç¼
  64.     enableNotification: true  // ֪ͨ¹¦ÄÜ
  65. };

  66. // ==================== µÚ¶þ²¿·Ö£ººËÐŤ¾ßÀà ====================

  67. /**
  68. * ÈÕÖ¾¹ÜÀíÆ÷ - ͳһÈÕÖ¾Êä³ö
  69. */
  70. var LogManager = {
  71.     prefix: "[ProMax]",
  72.     icons: {
  73.         info: "ℹ️",
  74.         success: "✅",
  75.         warning: "⚠️",
  76.         error: "❌",
  77.         debug: "🐛"
  78.     },
  79.    
  80.     log: function(message, level) {
  81.         if (!GlobalConfig.logEnabled) return;
  82.         level = level || "info";
  83.         var icon = this.icons[level] || this.icons.info;
  84.         var logMsg = this.prefix + " " + icon + " " + message;
  85.         
  86.         // Êä³öµ½ printl
  87.         printl(logMsg);
  88.         
  89.         // ͬ²½µ½ LogManagerH5 (Èç¹û¿ÉÓÃ)
  90.         try {
  91.             if (typeof LogManagerH5 !== "undefined") {
  92.                 switch(level) {
  93.                     case "success": LogManagerH5.success(message); break;
  94.                     case "warning": LogManagerH5.warning(message); break;
  95.                     case "error": LogManagerH5.error(message); break;
  96.                     default: LogManagerH5.info(message);
  97.                 }
  98.             }
  99.         } catch(e) {
  100.             // ºöÂÔ H5ÈÕÖ¾´íÎó
  101.         }
  102.     },
  103.    
  104.     info: function(msg) { this.log(msg, "info"); },
  105.     success: function(msg) { this.log(msg, "success"); },
  106.     warning: function(msg) { this.log(msg, "warning"); },
  107.     error: function(msg) { this.log(msg, "error"); },
  108.     debug: function(msg) { if(GlobalConfig.debugMode) this.log(msg, "debug"); }
  109. };

  110. /**
  111. * ÑÓ³Ùº¯Êý - ×èÈûʽµÈ´ý
  112. */
  113. function sleep(ms) {
  114.     var start = Date.now();
  115.     while (Date.now() - start < ms) {
  116.         // ×èÈûµÈ´ý
  117.     }
  118. }

  119. /**
  120. * Ëæ»úÊý¹¤¾ß - ʹÓÃÖ÷½Å±¾µÄ RandomUtils
  121. */
  122. var RandomHelper = {
  123.     randInt: function(min, max) {
  124.         if (typeof RandomUtils !== "undefined") {
  125.             return RandomUtils.randInt(min, max);
  126.         }
  127.         return Math.floor(Math.random() * (max - min + 1)) + min;
  128.     },
  129.    
  130.     randFloat: function(min, max) {
  131.         if (typeof RandomUtils !== "undefined") {
  132.             return RandomUtils.LtUqFOGkc6(min, max);
  133.         }
  134.         return Math.random() * (max - min) + min;
  135.     },
  136.    
  137.     randBool: function() {
  138.         if (typeof RandomUtils !== "undefined") {
  139.             return RandomUtils.randBool();
  140.         }
  141.         return Math.random() < 0.5;
  142.     },
  143.    
  144.     randChoice: function(arr) {
  145.         if (typeof RandomUtils !== "undefined") {
  146.             return RandomUtils.randArrayElement(arr);
  147.         }
  148.         if (!arr || arr.length === 0) return null;
  149.         return arr[Math.floor(Math.random() * arr.length)];
  150.     }
  151. };

  152. // ==================== µÚÈý²¿·Ö£º¹¦ÄÜÄ£¿éÀà ====================

  153. /**
  154. * ÆÁÄ»¹ÜÀíÆ÷ - ½ØÍ¼/OCR/»º´æ
  155. */
  156. var ScreenManager = {
  157.     width: 0,
  158.     height: 0,
  159.    
  160.     init: function() {
  161.         this.width = screen.getScreenWidth();
  162.         this.height = screen.getScreenHeight();
  163.         LogManager.info("ÆÁÄ»³ß´ç£º" + this.width + "x" + this.height);
  164.     },
  165.    
  166.     getScreenSize: function() {
  167.         return { width: this.width, height: this.height };
  168.     },
  169.    
  170.     captureFull: function() {
  171.         try {
  172.             LogManager.debug("Ö´ÐÐÈ«³ß´ç½ØÍ¼...");
  173.             var image = screen.screenShotFull();
  174.             LogManager.success("½ØÍ¼Íê³É");
  175.             return image;
  176.         } catch (e) {
  177.             LogManager.error("½ØÍ¼Ê§°Ü£º" + e);
  178.             return null;
  179.         }
  180.     },
  181.    
  182.     recognizeText: function(image, region) {
  183.         try {
  184.             var ocrRegion = region || GlobalConfig.ocrRegion;
  185.             LogManager.debug("OCR ʶ±ðÇøÓò£º[" + ocrRegion.join(", ") + "]");
  186.             var result = image.ocr(ocrRegion[0], ocrRegion[1], ocrRegion[2], ocrRegion[3]);
  187.             LogManager.success("OCR ʶ±ðÍê³É");
  188.             return result;
  189.         } catch (e) {
  190.             LogManager.error("OCR ʶ±ðʧ°Ü£º" + e);
  191.             return null;
  192.         }
  193.     },
  194.    
  195.     lockCache: function() {
  196.         try {
  197.             screen.lockScreen();
  198.             LogManager.info("ÆÁÄ»»º´æÒÑËø¶¨");
  199.         } catch (e) {
  200.             LogManager.error("Ëø¶¨»º´æÊ§°Ü£º" + e);
  201.         }
  202.     },
  203.    
  204.     unlockCache: function() {
  205.         try {
  206.             screen.unLockScreen();
  207.             LogManager.info("ÆÁÄ»»º´æÒѽâËø");
  208.         } catch (e) {
  209.             LogManager.error("½âËø»º´æÊ§°Ü£º" + e);
  210.         }
  211.     }
  212. };

  213. /**
  214. * µã»÷¹ÜÀíÆ÷ - ¶àÖÖµã»÷·½Ê½
  215. */
  216. var ClickManager = {
  217.     clickPercent: function(x, y) {
  218.         try {
  219.             LogManager.debug("°Ù·Ö±Èµã»÷£º(" + x + ", " + y + ")");
  220.             hid.clickPercent(x, y);
  221.             sleep(GlobalConfig.clickDelay);
  222.             LogManager.success("µã»÷³É¹¦");
  223.             return true;
  224.         } catch (e) {
  225.             LogManager.error("µã»÷ʧ°Ü£º" + e);
  226.             return false;
  227.         }
  228.     },
  229.    
  230.     clickAbsolute: function(x, y) {
  231.         try {
  232.             LogManager.debug("¾ø¶Ô×ø±êµã»÷£º(" + x + ", " + y + ")");
  233.             hid.click(x, y);
  234.             sleep(GlobalConfig.clickDelay);
  235.             LogManager.success("µã»÷³É¹¦");
  236.             return true;
  237.         } catch (e) {
  238.             LogManager.error("µã»÷ʧ°Ü£º" + e);
  239.             return false;
  240.         }
  241.     },
  242.    
  243.     clickOcrTarget: function(detect, mode) {
  244.         if (!detect) {
  245.             LogManager.warning("µã»÷Ä¿±êΪ¿Õ");
  246.             return false;
  247.         }
  248.         
  249.         try {
  250.             mode = mode || GlobalConfig.clickMode;
  251.             
  252.             if (mode === "center") {
  253.                 var rect = detect.getRect();
  254.                 var centerX = rect.getCenterX();
  255.                 var centerY = rect.getCenterY();
  256.                 LogManager.debug("µã»÷Îı¾ÖÐÐÄ£º(" + centerX + ", " + centerY + ")");
  257.                 return this.clickAbsolute(centerX, centerY);
  258.             } else {
  259.                 LogManager.debug("Ëæ»úµã»÷Îı¾ÇøÓò");
  260.                 detect.clickRandom();
  261.                 sleep(GlobalConfig.clickDelay);
  262.                 LogManager.success("µã»÷³É¹¦");
  263.                 return true;
  264.             }
  265.         } catch (e) {
  266.             LogManager.error("µã»÷ʧ°Ü£º" + e);
  267.             return false;
  268.         }
  269.     },
  270.    
  271.     doubleClick: function(x, y) {
  272.         try {
  273.             LogManager.debug("Ë«»÷£º(" + x + ", " + y + ")");
  274.             hid.doubleClickPercent(x, y);
  275.             sleep(GlobalConfig.clickDelay * 2);
  276.             LogManager.success("Ë«»÷³É¹¦");
  277.             return true;
  278.         } catch (e) {
  279.             LogManager.error("Ë«»÷ʧ°Ü£º" + e);
  280.             return false;
  281.         }
  282.     },
  283.    
  284.     longPress: function(x, y, duration) {
  285.         try {
  286.             duration = duration || 1000;
  287.             LogManager.debug("³¤°´£º(" + x + ", " + y + "), " + duration + "ms");
  288.             hid.longPressPercent(x, y, duration);
  289.             sleep(GlobalConfig.clickDelay);
  290.             LogManager.success("³¤°´³É¹¦");
  291.             return true;
  292.         } catch (e) {
  293.             LogManager.error("³¤°´Ê§°Ü£º" + e);
  294.             return false;
  295.         }
  296.     }
  297. };

  298. /**
  299. * »¬¶¯¹ÜÀíÆ÷ - ÊÖÊÆ²Ù×÷
  300. */
  301. var SwipeManager = {
  302.     swipeVertical: function(xPercent, yStart, yEnd) {
  303.         try {
  304.             LogManager.debug("´¹Ö±»¬¶¯£ºx=" + xPercent + ", y´Ó" + yStart + "µ½" + yEnd);
  305.             hid.swipVPercent(xPercent, yStart, xPercent, yEnd,
  306.                            GlobalConfig.swipeDuration, GlobalConfig.swipePause, 1);
  307.             sleep(GlobalConfig.swipePause);
  308.             LogManager.success("»¬¶¯³É¹¦");
  309.             return true;
  310.         } catch (e) {
  311.             LogManager.error("»¬¶¯Ê§°Ü£º" + e);
  312.             return false;
  313.         }
  314.     },
  315.    
  316.     swipeHorizontal: function(xStart, yPercent, xEnd) {
  317.         try {
  318.             LogManager.debug("ˮƽ»¬¶¯£ºy=" + yPercent + ", x´Ó" + xStart + "µ½" + xEnd);
  319.             hid.swipHPercent(xStart, yPercent, xEnd, yPercent,
  320.                            GlobalConfig.swipeDuration, GlobalConfig.swipePause, 1);
  321.             sleep(GlobalConfig.swipePause);
  322.             LogManager.success("»¬¶¯³É¹¦");
  323.             return true;
  324.         } catch (e) {
  325.             LogManager.error("»¬¶¯Ê§°Ü£º" + e);
  326.             return false;
  327.         }
  328.     },
  329.    
  330.     swipeCustom: function(x1, y1, x2, y2, duration) {
  331.         try {
  332.             duration = duration || GlobalConfig.swipeDuration;
  333.             LogManager.debug("×Ô¶¨Ò廬¶¯£º´Ó (" + x1 + "," + y1 + ") µ½ (" + x2 + "," + y2 + ")");
  334.             hid.swip(x1, y1, x2, y2, 50, duration, 1);
  335.             sleep(GlobalConfig.swipePause);
  336.             LogManager.success("»¬¶¯³É¹¦");
  337.             return true;
  338.         } catch (e) {
  339.             LogManager.error("»¬¶¯Ê§°Ü£º" + e);
  340.             return false;
  341.         }
  342.     }
  343. };

  344. /**
  345. * OCR ËÑË÷¹ÜÀíÆ÷ - Îı¾²éÕÒ
  346. */
  347. var OcrSearchManager = {
  348.     findExactText: function(ocrResult, text, region) {
  349.         try {
  350.             LogManager.debug("¾«È·²éÕÒ£º\"" + text + "\"");
  351.             var result = ocrResult.findText(text, region || GlobalConfig.ocrRegion);
  352.             if (result) {
  353.                 LogManager.success("ÕÒµ½Îı¾");
  354.             } else {
  355.                 LogManager.warning("δÕÒµ½Îı¾");
  356.             }
  357.             return result;
  358.         } catch (e) {
  359.             LogManager.error("²éÕÒʧ°Ü£º" + e);
  360.             return null;
  361.         }
  362.     },
  363.    
  364.     findIncludeText: function(ocrResult, text, region) {
  365.         try {
  366.             LogManager.debug("°üº¬²éÕÒ£º\"" + text + "\"");
  367.             var result = ocrResult.findIncludeText(text, region || GlobalConfig.ocrRegion);
  368.             if (result) {
  369.                 LogManager.success("ÕÒµ½Îı¾");
  370.             } else {
  371.                 LogManager.warning("δÕÒµ½Îı¾");
  372.             }
  373.             return result;
  374.         } catch (e) {
  375.             LogManager.error("²éÕÒʧ°Ü£º" + e);
  376.             return null;
  377.         }
  378.     },
  379.    
  380.     findRegex: function(ocrResult, regex, region) {
  381.         try {
  382.             LogManager.debug("ÕýÔò²éÕÒ£º\"" + regex + "\"");
  383.             var results = ocrResult.findRegex(regex, region || GlobalConfig.ocrRegion);
  384.             LogManager.success("ÕÒµ½ " + results.length + " ¸öÆ¥Åä");
  385.             return results;
  386.         } catch (e) {
  387.             LogManager.error("²éÕÒʧ°Ü£º" + e);
  388.             return [];
  389.         }
  390.     },
  391.    
  392.     getAllText: function(ocrResult) {
  393.         try {
  394.             var allDetects = ocrResult.getAllDetect();
  395.             var texts = [];
  396.             for (var i = 0; i < allDetects.length; i++) {
  397.                 // ÐÞÕý£ºÊ¹Óà .text ÊôÐÔ¶ø²»ÊÇ getText() ·½·¨
  398.                 if (allDetects[i] && allDetects[i].text) {
  399.                     texts.push(allDetects[i].text);
  400.                 }
  401.             }
  402.             LogManager.debug("»ñÈ¡µ½ " + texts.length + " ¸öÎı¾");
  403.             return texts;
  404.         } catch (e) {
  405.             LogManager.error("»ñÈ¡Îı¾Ê§°Ü£º" + e);
  406.             return [];
  407.         }
  408.     }
  409. };

  410. /**
  411. * Ó¦ÓùÜÀíÆ÷ - Ó¦ÓÿØÖÆ
  412. */
  413. var AppManager = {
  414.     installedApps: [],
  415.    
  416.     getInstalledApps: function() {
  417.         try {
  418.             LogManager.info("»ñÈ¡ÒѰ²×°Ó¦ÓÃÁбí...");
  419.             // ¼ÙÉèÓÐ app.getInstalledApps() ·½·¨
  420.             // this.installedApps = app.getInstalledApps();
  421.             LogManager.success("»ñÈ¡µ½ " + this.installedApps.length + " ¸öÓ¦ÓÃ");
  422.             return this.installedApps;
  423.         } catch (e) {
  424.             LogManager.error("»ñȡӦÓÃÁбíʧ°Ü£º" + e);
  425.             return [];
  426.         }
  427.     },
  428.    
  429.     launchApp: function(packageName) {
  430.         try {
  431.             LogManager.info("Æô¶¯Ó¦Óãº" + packageName);
  432.             // app.launch(packageName);
  433.             sleep(2000);
  434.             LogManager.success("Ó¦ÓÃÒÑÆô¶¯");
  435.             return true;
  436.         } catch (e) {
  437.             LogManager.error("Æô¶¯Ó¦ÓÃʧ°Ü£º" + e);
  438.             return false;
  439.         }
  440.     },
  441.    
  442.     switchToApp: function(appName) {
  443.         try {
  444.             LogManager.info("Çл»µ½Ó¦Óãº" + appName);
  445.             // ʹÓà OCR ²éÕÒ²¢µã»÷Ó¦ÓÃͼ±ê
  446.             var image = ScreenManager.captureFull();
  447.             if (!image) return false;
  448.             
  449.             var ocrResult = ScreenManager.recognizeText(image);
  450.             if (!ocrResult) return false;
  451.             
  452.             var target = OcrSearchManager.findExactText(ocrResult, appName);
  453.             if (target) {
  454.                 return ClickManager.clickOcrTarget(target);
  455.             } else {
  456.                 LogManager.error("δÕÒµ½Ó¦Óãº" + appName);
  457.                 return false;
  458.             }
  459.         } catch (e) {
  460.             LogManager.error("Çл»Ó¦ÓÃʧ°Ü£º" + e);
  461.             return false;
  462.         }
  463.     }
  464. };

  465. /**
  466. * Êý¾Ý¹ÜÀíÆ÷ - Map ´æ´¢/ÀúÊ·¼Ç¼
  467. */
  468. var DataManager = {
  469.     dataMap: null,
  470.     history: [],
  471.    
  472.     init: function() {
  473.         if (typeof Map !== "undefined") {
  474.             this.dataMap = new Map();
  475.             LogManager.debug("Map ³õʼ»¯³É¹¦");
  476.         } else {
  477.             this.dataMap = { keys: [], values: [] };
  478.             LogManager.debug("½µ¼¶ Map ³õʼ»¯³É¹¦");
  479.         }
  480.     },
  481.    
  482.     put: function(key, value) {
  483.         try {
  484.             if (this.dataMap.add) {
  485.                 this.dataMap.add(key, value);
  486.             } else {
  487.                 var index = this.dataMap.keys.indexOf(key);
  488.                 if (index === -1) {
  489.                     this.dataMap.keys.push(key);
  490.                     this.dataMap.values.push(value);
  491.                 } else {
  492.                     this.dataMap.values[index] = value;
  493.                 }
  494.             }
  495.             LogManager.debug("´æ´¢Êý¾Ý£º" + key + " = " + value);
  496.         } catch (e) {
  497.             LogManager.error("´æ´¢Êý¾Ýʧ°Ü£º" + e);
  498.         }
  499.     },
  500.    
  501.     get: function(key) {
  502.         try {
  503.             if (this.dataMap.get) {
  504.                 return this.dataMap.get(key);
  505.             } else {
  506.                 var index = this.dataMap.keys.indexOf(key);
  507.                 return index !== -1 ? this.dataMap.values[index] : null;
  508.             }
  509.         } catch (e) {
  510.             LogManager.error("»ñÈ¡Êý¾Ýʧ°Ü£º" + e);
  511.             return null;
  512.         }
  513.     },
  514.    
  515.     addHistory: function(action) {
  516.         if (!GlobalConfig.enableHistory) return;
  517.         
  518.         this.history.push({
  519.             action: action,
  520.             timestamp: Date.now()
  521.         });
  522.         
  523.         // ÏÞÖÆÀúÊ·¼Ç¼ÊýÁ¿
  524.         if (this.history.length > 100) {
  525.             this.history.shift();
  526.         }
  527.         
  528.         LogManager.debug("Ìí¼ÓÀúÊ·¼Ç¼£º" + action);
  529.     },
  530.    
  531.     getHistory: function() {
  532.         return this.history;
  533.     }
  534. };

  535. // ==================== µÚËIJ¿·Ö£º¸ß¼¶¹¦ÄÜÄ£¿é ====================

  536. /**
  537. * ×Ô¶¯»¯ÈÎÎñÒýÇæ
  538. */
  539. var AutomationEngine = {
  540.     isRunning: false,
  541.     currentTask: null,
  542.    
  543.     startTask: function(taskName, taskFunction) {
  544.         if (this.isRunning) {
  545.             LogManager.warning("ÒÑÓÐÈÎÎñÕýÔÚÔËÐÐ");
  546.             return false;
  547.         }
  548.         
  549.         try {
  550.             this.isRunning = true;
  551.             this.currentTask = taskName;
  552.             LogManager.info("¿ªÊ¼ÈÎÎñ£º" + taskName);
  553.             DataManager.addHistory("Æô¶¯ÈÎÎñ£º" + taskName);
  554.             
  555.             taskFunction();
  556.             
  557.             LogManager.success("ÈÎÎñÍê³É£º" + taskName);
  558.             DataManager.addHistory("Íê³ÉÈÎÎñ£º" + taskName);
  559.         } catch (e) {
  560.             LogManager.error("ÈÎÎñÖ´ÐÐʧ°Ü£º" + e);
  561.         } finally {
  562.             this.isRunning = false;
  563.             this.currentTask = null;
  564.         }
  565.     },
  566.    
  567.     stopTask: function() {
  568.         if (!this.isRunning) {
  569.             LogManager.warning("ûÓÐÕýÔÚÔËÐеÄÈÎÎñ");
  570.             return;
  571.         }
  572.         
  573.         LogManager.info("Í£Ö¹ÈÎÎñ£º" + this.currentTask);
  574.         this.isRunning = false;
  575.         DataManager.addHistory("Í£Ö¹ÈÎÎñ£º" + this.currentTask);
  576.     }
  577. };

  578. /**
  579. * ÖÇÄܾö²ßϵͳ
  580. */
  581. var AIDecisionSystem = {
  582.     decide: function(options) {
  583.         if (!GlobalConfig.enableAI) {
  584.             return options[0]; // ·µ»ØµÚÒ»¸öÑ¡Ïî
  585.         }
  586.         
  587.         // ¸ù¾ÝÈ¨ÖØËæ»úÑ¡Ôñ
  588.         var totalWeight = 0;
  589.         for (var i = 0; i < options.length; i++) {
  590.             totalWeight += (options[i].weight || 1);
  591.         }
  592.         
  593.         var random = RandomHelper.randFloat(0, totalWeight);
  594.         var currentWeight = 0;
  595.         
  596.         for (var i = 0; i < options.length; i++) {
  597.             currentWeight += (options[i].weight || 1);
  598.             if (random <= currentWeight) {
  599.                 LogManager.debug("AI ¾ö²ßÑ¡Ôñ£º" + (options[i].name || ("Ñ¡Ïî" + i)));
  600.                 return options[i];
  601.             }
  602.         }
  603.         
  604.         return options[0];
  605.     },
  606.    
  607.     analyze: function(ocrResult) {
  608.         if (!GlobalConfig.enableAI) return null;
  609.         
  610.         try {
  611.             // ✅ ÐÞÕý£ºµ÷Óà OcrSearchManager.getAllText ¶ø²»ÊÇ this.getAllText
  612.             var texts = OcrSearchManager.getAllText(ocrResult);
  613.             LogManager.info("AI ·ÖÎö£º" + texts.length + " ¸öÎı¾ÔªËØ");
  614.             
  615.             // ¼òµ¥·ÖÎöÂß¼­£¨¿ÉÀ©Õ¹Îª¸´ÔÓ AI£©
  616.             return {
  617.                 textCount: texts.length,
  618.                 keywords: this.extractKeywords(texts),
  619.                 confidence: 0.8
  620.             };
  621.         } catch (e) {
  622.             LogManager.error("AI ·ÖÎöʧ°Ü£º" + e);
  623.             return null;
  624.         }
  625.     },
  626.    
  627.     extractKeywords: function(texts) {
  628.         var keywords = ["È·¶¨", "È¡Ïû", "¿ªÊ¼", "ÉèÖÃ", "ÏÂÒ»²½"];
  629.         var found = [];
  630.         
  631.         for (var i = 0; i < texts.length; i++) {
  632.             for (var j = 0; j < keywords.length; j++) {
  633.                 if (texts[i].indexOf(keywords[j]) !== -1) {
  634.                     found.push(texts[i]);
  635.                 }
  636.             }
  637.         }
  638.         
  639.         return found;
  640.     }
  641. };

  642. // ==================== µÚÎ岿·Ö£ºÊµÕ½°¸ÀýÑÝʾ ====================

  643. /**
  644. * °¸Àý 1: ×Ô¶¯Æô¶¯Ó¦Óò¢µ¼º½
  645. */
  646. function demo_autoLaunchAndNavigate() {
  647.     LogManager.info("=== °¸Àý 1: ×Ô¶¯Æô¶¯Ó¦Óò¢µ¼º½ ===");
  648.    
  649.     var targetApp = "΢ÐÅ";
  650.    
  651.     // ²½Öè 1: Æô¶¯Ó¦ÓÃ
  652.     if (!AppManager.launchApp(targetApp)) {
  653.         LogManager.error("Æô¶¯Ê§°Ü£¬ÖÕÖ¹Á÷³Ì");
  654.         return;
  655.     }
  656.    
  657.     sleep(3000);
  658.    
  659.     // ²½Öè 2: ½ØÍ¼Ê¶±ð
  660.     var image = ScreenManager.captureFull();
  661.     if (!image) return;
  662.    
  663.     var ocrResult = ScreenManager.recognizeText(image);
  664.     if (!ocrResult) return;
  665.    
  666.     // ²½Öè 3: ²éÕÒ²¢µã»÷Ä¿±ê°´Å¥
  667.     var targetBtn = OcrSearchManager.findIncludeText(ocrResult, "·¢ÏÖ");
  668.     if (targetBtn) {
  669.         ClickManager.clickOcrTarget(targetBtn);
  670.         LogManager.success("ÒѽøÈë·¢ÏÖÒ³Ãæ");
  671.     }
  672.    
  673.     sleep(2000);
  674.    
  675.     // ²½Öè 4: ÏòÏ»¬¶¯ä¯ÀÀ
  676.     SwipeManager.swipeVertical(0.5, 0.8, 0.2);
  677.    
  678.     LogManager.success("°¸Àý 1 Íê³É");
  679. }

  680. /**
  681. * °¸Àý 2: ÖÇÄÜÑ­»·ÈÎÎñ
  682. */
  683. function demo_smartLoopTask() {
  684.     LogManager.info("=== °¸Àý 2: ÖÇÄÜÑ­»·ÈÎÎñ ===");
  685.    
  686.     var maxLoops = 5;
  687.     var loopCount = 0;
  688.    
  689.     while (loopCount < maxLoops) {
  690.         loopCount++;
  691.         LogManager.info("µÚ " + loopCount + " ´ÎÑ­»·");
  692.         
  693.         // ½ØÍ¼·ÖÎö
  694.         var image = ScreenManager.captureFull();
  695.         var ocrResult = ScreenManager.recognizeText(image);
  696.         
  697.         // AI ¾ö²ß
  698.         var analysis = AIDecisionSystem.analyze(ocrResult);
  699.         if (analysis && analysis.keywords.length > 0) {
  700.             LogManager.info("AI ¼ì²âµ½¹Ø¼ü´Ê£º" + analysis.keywords.join(", "));
  701.         }
  702.         
  703.         // Ëæ»ú»¬¶¯
  704.         var direction = RandomHelper.randBool() ? "up" : "down";
  705.         if (direction === "up") {
  706.             SwipeManager.swipeVertical(0.5, 0.8, 0.2);
  707.         } else {
  708.             SwipeManager.swipeVertical(0.5, 0.2, 0.8);
  709.         }
  710.         
  711.         sleep(RandomHelper.randInt(1000, 2000));
  712.         
  713.         // ¼Ç¼ÀúÊ·
  714.         DataManager.addHistory("Ñ­»· " + loopCount);
  715.     }
  716.    
  717.     LogManager.success("°¸Àý 2 Íê³É£¬¹²Ñ­»· " + loopCount + " ´Î");
  718. }

  719. /**
  720. * °¸Àý 3: ¶à²½Öè±íµ¥Ìîд
  721. */
  722. function demo_formAutomation() {
  723.     LogManager.info("=== °¸Àý 3: ¶à²½Öè±íµ¥Ìîд ===");
  724.    
  725.     var formData = {
  726.         username: "test_user",
  727.         password: "123456",
  728.         confirm: true
  729.     };
  730.    
  731.     // ²½Öè 1: ÕÒµ½ÊäÈë¿ò²¢µã»÷
  732.     var image = ScreenManager.captureFull();
  733.     var ocrResult = ScreenManager.recognizeText(image);
  734.    
  735.     var inputField = OcrSearchManager.findIncludeText(ocrResult, "Óû§Ãû");
  736.     if (inputField) {
  737.         ClickManager.clickOcrTarget(inputField);
  738.         sleep(500);
  739.         
  740.         // Ä£ÄâÊäÈë (ʵ¼ÊÐèҪʹÓà hid.inputSimple)
  741.         LogManager.info("ÊäÈëÓû§Ãû£º" + formData.username);
  742.         // hid.inputSimple(formData.username);
  743.     }
  744.    
  745.     sleep(1000);
  746.    
  747.     // ²½Öè 2: ²éÕÒÃÜÂë¿ò
  748.     var passwordField = OcrSearchManager.findIncludeText(ocrResult, "ÃÜÂë");
  749.     if (passwordField) {
  750.         ClickManager.clickOcrTarget(passwordField);
  751.         sleep(500);
  752.         
  753.         LogManager.info("ÊäÈëÃÜÂë");
  754.         // hid.inputSimple(formData.password);
  755.     }
  756.    
  757.     sleep(1000);
  758.    
  759.     // ²½Öè 3: ¹´Ñ¡¸´Ñ¡¿ò (Èç¹ûÓÐ)
  760.     if (formData.confirm) {
  761.         var checkbox = OcrSearchManager.findIncludeText(ocrResult, "ͬÒâ");
  762.         if (checkbox) {
  763.             ClickManager.clickOcrTarget(checkbox);
  764.             LogManager.info("Òѹ´Ñ¡Í¬ÒâЭÒé");
  765.         }
  766.     }
  767.    
  768.     sleep(1000);
  769.    
  770.     // ²½Öè 4: µã»÷Ìá½»°´Å¥
  771.     var submitBtn = OcrSearchManager.findExactText(ocrResult, "µÇ¼");
  772.     if (submitBtn) {
  773.         ClickManager.clickOcrTarget(submitBtn);
  774.         LogManager.success("±íµ¥Ìá½»Íê³É");
  775.     }
  776. }

  777. /**
  778. * °¸Àý 4: ´íÎó´¦ÀíÓë×ÔÓú
  779. */
  780. function demo_errorRecovery() {
  781.     LogManager.info("=== °¸Àý 4: ´íÎó´¦ÀíÓë×ÔÓú ===");
  782.    
  783.     var retryCount = 0;
  784.     var maxRetry = GlobalConfig.maxRetryTimes;
  785.     var success = false;
  786.    
  787.     while (!success && retryCount < maxRetry) {
  788.         try {
  789.             retryCount++;
  790.             LogManager.info("µÚ " + retryCount + " ´Î³¢ÊÔ");
  791.             
  792.             // Ä£Äâ¿ÉÄÜʧ°ÜµÄ²Ù×÷
  793.             var image = ScreenManager.captureFull();
  794.             if (!image) {
  795.                 throw new Error("½ØÍ¼Ê§°Ü");
  796.             }
  797.             
  798.             var ocrResult = ScreenManager.recognizeText(image);
  799.             if (!ocrResult) {
  800.                 throw new Error("OCR ʧ°Ü");
  801.             }
  802.             
  803.             // ²éÕÒÄ¿±ê
  804.             var target = OcrSearchManager.findIncludeText(ocrResult, "Ä¿±ê°´Å¥");
  805.             if (!target) {
  806.                 throw new Error("δÕÒµ½Ä¿±ê");
  807.             }
  808.             
  809.             // µã»÷
  810.             if (ClickManager.clickOcrTarget(target)) {
  811.                 success = true;
  812.                 LogManager.success("²Ù×÷³É¹¦");
  813.             } else {
  814.                 throw new Error("µã»÷ʧ°Ü");
  815.             }
  816.             
  817.         } catch (e) {
  818.             LogManager.error("³¢ÊÔʧ°Ü£º" + e);
  819.             
  820.             if (retryCount < maxRetry) {
  821.                 LogManager.info("µÈ´ýºóÖØÊÔ...");
  822.                 sleep(2000);
  823.             } else {
  824.                 LogManager.error("´ïµ½×î´óÖØÊÔ´ÎÊý£¬·ÅÆú");
  825.             }
  826.         }
  827.     }
  828.    
  829.     if (success) {
  830.         LogManager.success("°¸Àý 4 Íê³É£¨×ÔÓú³É¹¦£©");
  831.     } else {
  832.         LogManager.error("°¸Àý 4 ʧ°Ü£¨ÎÞ·¨»Ö¸´£©");
  833.     }
  834. }

  835. // ==================== µÚÁù²¿·Ö£ºÖ÷³ÌÐòÈë¿Ú ====================

  836. /**
  837. * ³õʼ»¯ÏµÍ³
  838. */
  839. function initSystem() {
  840.     LogManager.info("¨X¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨[");
  841.     LogManager.info("¨U   AIWROK ÖÇÄÜÓ¦ÓùÜÀíÆ÷ Pro Max             ¨U");
  842.     LogManager.info("¨U   °æ±¾£º" + GlobalConfig.version + "                          ¨U");
  843.     LogManager.info("¨U   ×÷Õߣº" + GlobalConfig.author + "              ¨U");
  844.     LogManager.info("¨^¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨a");
  845.    
  846.     sleep(1000);
  847.    
  848.     // ³õʼ»¯¸÷Ä£¿é
  849.     ScreenManager.init();
  850.     DataManager.init();
  851.    
  852.     LogManager.success("ϵͳ³õʼ»¯Íê³É");
  853.     sleep(1000);
  854. }

  855. /**
  856. * Ö÷º¯Êý
  857. */
  858. function main() {
  859.     // ³õʼ»¯
  860.     initSystem();
  861.    
  862.     // Ñ¡ÔñÒªÖ´ÐеݸÀý
  863.     var demos = [
  864.         { name: "°¸Àý 1: ×Ô¶¯Æô¶¯Ó¦Óò¢µ¼º½", func: demo_autoLaunchAndNavigate },
  865.         { name: "°¸Àý 2: ÖÇÄÜÑ­»·ÈÎÎñ", func: demo_smartLoopTask },
  866.         { name: "°¸Àý 3: ¶à²½Öè±íµ¥Ìîд", func: demo_formAutomation },
  867.         { name: "°¸Àý 4: ´íÎó´¦ÀíÓë×ÔÓú", func: demo_errorRecovery }
  868.     ];
  869.    
  870.     // Ö´ÐÐËùÓÐÑÝʾ
  871.     for (var i = 0; i < demos.length; i++) {
  872.         LogManager.info("\n>>> ×¼±¸Ö´ÐУº" + demos[i].name);
  873.         sleep(2000);
  874.         
  875.         AutomationEngine.startTask(demos[i].name, demos[i].func);
  876.         
  877.         sleep(3000);
  878.     }
  879.    
  880.     // ÏÔʾͳ¼ÆÐÅÏ¢
  881.     LogManager.info("\n¨X¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨[");
  882.     LogManager.info("¨U           ËùÓÐÑÝʾÍê³É£¡                   ¨U");
  883.     LogManager.info("¨^¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨a");
  884.    
  885.     var history = DataManager.getHistory();
  886.     LogManager.info("ÀúÊ·¼Ç¼ÊýÁ¿£º" + history.length);
  887.    
  888.     // Êä³öÀúÊ·
  889.     for (var i = 0; i < Math.min(5, history.length); i++) {
  890.         LogManager.debug(history[i].action);
  891.     }
  892. }

  893. // ÔËÐÐÖ÷³ÌÐò
  894. main();

  895. /**
  896. * ============================================
  897. * À©Õ¹ËµÃ÷:
  898. *
  899. * 1. Ìí¼Óй¦ÄÜ:
  900. *    - ÔÚ¶ÔÓ¦ Manager ÖÐÌí¼Ó·½·¨
  901. *    - ×ñÑ­ÏÖÓдúÂë·ç¸ñ
  902. *
  903. * 2. ×Ô¶¨ÒåÈÎÎñ:
  904. *    - ²Î¿¼ demo_* º¯Êý½á¹¹
  905. *    - ×éºÏʹÓø÷ Manager ¹¦ÄÜ
  906. *
  907. * 3. µ÷ÊÔ¼¼ÇÉ:
  908. *    - ÉèÖÃ GlobalConfig.debugMode = true
  909. *    - ²é¿´ LogManager.debug Êä³ö
  910. *
  911. * 4. ÐÔÄÜÓÅ»¯:
  912. *    - ÆôÓà OCR Ëø¼õÉÙÖØ¸´½ØÍ¼
  913. *    - ºÏÀíÉèÖÃÑÓ³Ùʱ¼ä
  914. *
  915. * 5. ×î¼Ñʵ¼ù:
  916. *    - ×ÜÊǽøÐдíÎó´¦Àí
  917. *    - ¼Ç¼¹Ø¼ü²Ù×÷ÈÕÖ¾
  918. *    - ʹÓÃÖØÊÔ»úÖÆÌá¸ßÎȶ¨ÐÔ
  919. * ============================================
  920. */
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-3-26 17:49 , Processed in 0.691436 second(s), 35 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí