B2BÍøÂçÈí¼þ

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

Æ»¹û½Å±¾ÆÁÄ»ÀàscreenÀý×Ó

[¸´ÖÆÁ´½Ó]

1064

Ö÷Ìâ

1069

Ìû×Ó

7533

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7533
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
Æ»¹û½Å±¾ÆÁÄ»ÀàscreenÀý×Ó
Æ»¹û½Å±¾ÆÁÄ»ÀàscreenÀý×Ó B2BÍøÂçÈí¼þ

Æ»¹û½Å±¾ÆÁÄ»ÀàscreenÀý×Ó B2BÍøÂçÈí¼þ

Æ»¹û½Å±¾ÆÁÄ»ÀàscreenÀý×Ó B2BÍøÂçÈí¼þ
  1. /**
  2. * ============================================
  3. * AIWROK ÖÇÄÜÆÁÄ»×Ô¶¯»¯ÖúÊÖ Pro
  4. * °æ±¾£º1.0.0
  5. * ƽ̨£ºiOS (AIWROK)
  6. * QQ Ⱥ£º711841924 Ⱥһ£¬Æ»¹ûÄÚ²âȺ 528816639
  7. * ============================================
  8. *
  9. * ¹¦ÄÜÌØÐÔ:
  10. * 1. 🎯 OCR ÖÇÄÜʶ±ðÆÁĻӦÓÃͼ±ê
  11. * 2. 👆 ×Ô¶¯µã»÷´ò¿ªÄ¿±êÓ¦ÓÃ
  12. * 3. 📊 H5 ¿ÉÊÓ»¯¿ØÖÆÃæ°å
  13. * 4. 📝 ʵʱÈÕÖ¾¼Ç¼ϵͳ
  14. * 5. ⚡ Ò»¼ü¿ì½Ý²Ù×÷
  15. * 6. 🔍 ×Ô¶¨ÒåÇøÓòɨÃè
  16. */

  17. // ==================== È«¾ÖÅäÖà ====================
  18. var AppConfig = {
  19.     appName: "ÖÇÄÜÆÁÄ»×Ô¶¯»¯ÖúÊÖ Pro",
  20.     version: "1.0.0",
  21.     debugMode: true,
  22.     ocrRegion: [0, 0, 1, 1], // ĬÈÏÈ«ÆÁ OCR
  23.     clickDelay: 500, // µã»÷ÑÓ³Ù (ms)
  24.     retryTimes: 3, // ÖØÊÔ´ÎÊý
  25.     logEnabled: true
  26. };

  27. // ==================== ¹¤¾ßº¯Êý ====================

  28. /**
  29. * ×èÈûÑÓ³Ùº¯Êý
  30. * @param {number} ms - ºÁÃëÊý
  31. */
  32. function sleep(ms) {
  33.     var start = Date.now();
  34.     while (Date.now() - start < ms) {
  35.         // ×èÈûµÈ´ý
  36.     }
  37. }

  38. /**
  39. * Êä³öÈÕÖ¾ (¼æÈݶàÖÖÈÕÖ¾·½Ê½)
  40. * @param {string} message - ÈÕÖ¾ÄÚÈÝ
  41. */
  42. function log(message) {
  43.     if (AppConfig.logEnabled) {
  44.         printl(message);
  45.         // ͬʱ·¢Ë͵½ LogManagerH5(Èç¹û¿ÉÓÃ)
  46.         try {
  47.             LogManagerH5.info(message);
  48.         } catch (e) {
  49.             // LogManagerH5 ²»¿ÉÓÃʱºöÂÔ
  50.         }
  51.     }
  52. }

  53. /**
  54. * Êä³ö·Ö¸ôÏß
  55. */
  56. function separator() {
  57.     log("========================================");
  58. }

  59. // ==================== ºËÐŦÄÜÀà ====================

  60. /**
  61. * ÆÁÄ»²Ù×÷¹ÜÀíÆ÷
  62. */
  63. var ScreenManager = {
  64.     /**
  65.      * »ñÈ¡ÆÁÄ»³ß´ç
  66.      */
  67.     getScreenSize: function() {
  68.         return {
  69.             width: screen.getScreenWidth(),
  70.             height: screen.getScreenHeight()
  71.         };
  72.     },
  73.    
  74.     /**
  75.      * È«³ß´ç½ØÍ¼
  76.      * @returns {Image} ½ØÍ¼¶ÔÏó
  77.      */
  78.     captureFull: function() {
  79.         try {
  80.             log("[½ØÍ¼] Ö´ÐÐÈ«³ß´ç½ØÍ¼...");
  81.             var image = screen.screenShotFull();
  82.             log("[½ØÍ¼] ½ØÍ¼Íê³É");
  83.             return image;
  84.         } catch (e) {
  85.             log("[´íÎó] ½ØÍ¼Ê§°Ü£º" + e);
  86.             return null;
  87.         }
  88.     },
  89.    
  90.     /**
  91.      * Ëõ·Å½ØÍ¼
  92.      * @param {number} width - ¿í¶È
  93.      * @param {number} height - ¸ß¶È
  94.      * @param {number} compress - ѹËõÂÊ (0-100)
  95.      * @returns {Image} ½ØÍ¼¶ÔÏó
  96.      */
  97.     captureScaled: function(width, height, compress) {
  98.         try {
  99.             log("[½ØÍ¼] Ö´ÐÐËõ·Å½ØÍ¼£º" + width + "x" + height + ", ѹËõÂÊ:" + compress);
  100.             var image = screen.screenShot(width, height, compress);
  101.             log("[½ØÍ¼] ½ØÍ¼Íê³É");
  102.             return image;
  103.         } catch (e) {
  104.             log("[´íÎó] ½ØÍ¼Ê§°Ü£º" + e);
  105.             return null;
  106.         }
  107.     },
  108.    
  109.     /**
  110.      * Ö´ÐÐ OCR ʶ±ð
  111.      * @param {Image} image - ͼÏñ¶ÔÏó
  112.      * @param {Array} region - ʶ±ðÇøÓò [left, top, right, bottom]
  113.      * @returns {OcrResult} OCR ½á¹û
  114.      */
  115.     recognizeText: function(image, region) {
  116.         try {
  117.             var ocrRegion = region || AppConfig.ocrRegion;
  118.             log("[OCR] ¿ªÊ¼Ê¶±ð£¬ÇøÓò£º[" + ocrRegion.join(", ") + "]");
  119.             var result = image.ocr(ocrRegion[0], ocrRegion[1], ocrRegion[2], ocrRegion[3]);
  120.             log("[OCR] ʶ±ðÍê³É");
  121.             return result;
  122.         } catch (e) {
  123.             log("[´íÎó] OCR ʶ±ðʧ°Ü£º" + e);
  124.             return null;
  125.         }
  126.     },
  127.    
  128.     /**
  129.      * Ëø¶¨ÆÁÄ»»º´æ
  130.      */
  131.     lockCache: function() {
  132.         try {
  133.             screen.lockScreen();
  134.             log("[»º´æ] ÆÁÄ»»º´æÒÑËø¶¨");
  135.         } catch (e) {
  136.             log("[´íÎó] Ëø¶¨»º´æÊ§°Ü£º" + e);
  137.         }
  138.     },
  139.    
  140.     /**
  141.      * ½âËøÆÁÄ»»º´æ
  142.      */
  143.     unlockCache: function() {
  144.         try {
  145.             screen.unLockScreen();
  146.             log("[»º´æ] ÆÁÄ»»º´æÒѽâËø");
  147.         } catch (e) {
  148.             log("[´íÎó] ½âËø»º´æÊ§°Ü£º" + e);
  149.         }
  150.     }
  151. };

  152. /**
  153. * µã»÷²Ù×÷¹ÜÀíÆ÷
  154. */
  155. var ClickManager = {
  156.     /**
  157.      * °Ù·Ö±ÈλÖõã»÷
  158.      * @param {number} xPercent - X Öá°Ù·Ö±È (0-1)
  159.      * @param {number} yPercent - Y Öá°Ù·Ö±È (0-1)
  160.      */
  161.     clickPercent: function(xPercent, yPercent) {
  162.         try {
  163.             log("[µã»÷] °Ù·Ö±È×ø±ê£º(" + xPercent + ", " + yPercent + ")");
  164.             hid.clickPercent(xPercent, yPercent);
  165.             sleep(AppConfig.clickDelay);
  166.             log("[µã»÷] µã»÷³É¹¦");
  167.         } catch (e) {
  168.             log("[´íÎó] µã»÷ʧ°Ü£º" + e);
  169.         }
  170.     },
  171.    
  172.     /**
  173.      * ¾ø¶Ô×ø±êµã»÷
  174.      * @param {number} x - X ×ø±ê
  175.      * @param {number} y - Y ×ø±ê
  176.      */
  177.     clickAbsolute: function(x, y) {
  178.         try {
  179.             log("[µã»÷] ¾ø¶Ô×ø±ê£º(" + x + ", " + y + ")");
  180.             hid.click(x, y);
  181.             sleep(AppConfig.clickDelay);
  182.             log("[µã»÷] µã»÷³É¹¦");
  183.         } catch (e) {
  184.             log("[´íÎó] µã»÷ʧ°Ü£º" + e);
  185.         }
  186.     },
  187.    
  188.     /**
  189.      * µã»÷ OCR ʶ±ðµ½µÄÎı¾
  190.      * @param {Detect} detect - OCR ¼ì²â¶ÔÏó
  191.      * @param {string} clickType - µã»÷ÀàÐÍ£º"center" | "random"
  192.      */
  193.     clickOcrTarget: function(detect, clickType) {
  194.         try {
  195.             if (!detect) {
  196.                 log("[¾¯¸æ] µã»÷Ä¿±êΪ¿Õ");
  197.                 return false;
  198.             }
  199.             
  200.             var rect = detect.getRect();
  201.             var centerX = rect.getCenterX();
  202.             var centerY = rect.getCenterY();
  203.             
  204.             if (clickType === "center") {
  205.                 log("[µã»÷] µã»÷Îı¾ÖÐÐÄ£º(" + centerX + ", " + centerY + ")");
  206.                 this.clickAbsolute(centerX, centerY);
  207.             } else {
  208.                 log("[µã»÷] Ëæ»úµã»÷Îı¾ÇøÓò");
  209.                 detect.clickRandom();
  210.             }
  211.             
  212.             log("[µã»÷] µã»÷³É¹¦");
  213.             return true;
  214.         } catch (e) {
  215.             log("[´íÎó] µã»÷ʧ°Ü£º" + e);
  216.             return false;
  217.         }
  218.     },
  219.    
  220.     /**
  221.      * Ë«»÷²Ù×÷
  222.      * @param {number} xPercent - X Öá°Ù·Ö±È
  223.      * @param {number} yPercent - Y Öá°Ù·Ö±È
  224.      */
  225.     doubleClick: function(xPercent, yPercent) {
  226.         try {
  227.             log("[Ë«»÷] °Ù·Ö±È×ø±ê£º(" + xPercent + ", " + yPercent + ")");
  228.             hid.doubleClickPercent(xPercent, yPercent);
  229.             sleep(AppConfig.clickDelay * 2);
  230.             log("[Ë«»÷] Ë«»÷³É¹¦");
  231.         } catch (e) {
  232.             log("[´íÎó] Ë«»÷ʧ°Ü£º" + e);
  233.         }
  234.     }
  235. };

  236. /**
  237. * OCR Îı¾²éÕÒ¹ÜÀíÆ÷
  238. */
  239. var OcrSearchManager = {
  240.     /**
  241.      * ²éÕÒ¾«È·Îı¾
  242.      * @param {OcrResult} ocrResult - OCR ½á¹û
  243.      * @param {string} text - Òª²éÕÒµÄÎı¾
  244.      * @param {Array} region - ²éÕÒÇøÓò
  245.      * @returns {Detect} ¼ì²â½á¹û
  246.      */
  247.     findExactText: function(ocrResult, text, region) {
  248.         try {
  249.             log("[²éÕÒ] ¾«È·²éÕÒÎı¾£º\"" + text + "\"");
  250.             var result = ocrResult.findText(text, region || AppConfig.ocrRegion);
  251.             if (result) {
  252.                 log("[²éÕÒ] ÕÒµ½Îı¾");
  253.             } else {
  254.                 log("[²éÕÒ] δÕÒµ½Îı¾");
  255.             }
  256.             return result;
  257.         } catch (e) {
  258.             log("[´íÎó] ²éÕÒʧ°Ü£º" + e);
  259.             return null;
  260.         }
  261.     },
  262.    
  263.     /**
  264.      * ²éÕÒ°üº¬Îı¾
  265.      * @param {OcrResult} ocrResult - OCR ½á¹û
  266.      * @param {string} text - Òª²éÕÒµÄÎı¾
  267.      * @param {Array} region - ²éÕÒÇøÓò
  268.      * @returns {Detect} ¼ì²â½á¹û
  269.      */
  270.     findIncludeText: function(ocrResult, text, region) {
  271.         try {
  272.             log("[²éÕÒ] ²éÕÒ°üº¬Îı¾£º\"" + text + "\"");
  273.             var result = ocrResult.findIncludeText(text, region || AppConfig.ocrRegion);
  274.             if (result) {
  275.                 log("[²éÕÒ] ÕÒµ½Îı¾");
  276.             } else {
  277.                 log("[²éÕÒ] δÕÒµ½Îı¾");
  278.             }
  279.             return result;
  280.         } catch (e) {
  281.             log("[´íÎó] ²éÕÒʧ°Ü£º" + e);
  282.             return null;
  283.         }
  284.     },
  285.    
  286.     /**
  287.      * ʹÓÃÕýÔò±í´ïʽ²éÕÒ
  288.      * @param {OcrResult} ocrResult - OCR ½á¹û
  289.      * @param {string} regex - ÕýÔò±í´ïʽ
  290.      * @param {Array} region - ²éÕÒÇøÓò
  291.      * @returns {Array} ¼ì²â½á¹ûÊý×é
  292.      */
  293.     findTextWithRegex: function(ocrResult, regex, region) {
  294.         try {
  295.             log("[²éÕÒ] ʹÓÃÕýÔò²éÕÒ£º" + regex);
  296.             var results = ocrResult.findTextWithRegex(regex, region || AppConfig.ocrRegion);
  297.             if (results && results.length > 0) {
  298.                 log("[²éÕÒ] ÕÒµ½ " + results.length + " ¸öÆ¥ÅäÏî");
  299.             } else {
  300.                 log("[²éÕÒ] δÕÒµ½Æ¥ÅäÏî");
  301.             }
  302.             return results;
  303.         } catch (e) {
  304.             log("[´íÎó] ²éÕÒʧ°Ü£º" + e);
  305.             return null;
  306.         }
  307.     },
  308.    
  309.     /**
  310.      * »ñÈ¡ËùÓмì²â½á¹û
  311.      * @param {OcrResult} ocrResult - OCR ½á¹û
  312.      * @returns {Array} ËùÓмì²â½á¹û
  313.      */
  314.     getAllDetects: function(ocrResult) {
  315.         try {
  316.             log("[²éÕÒ] »ñÈ¡ËùÓмì²â½á¹û");
  317.             var results = ocrResult.getAllDetect();
  318.             if (results) {
  319.                 log("[²éÕÒ] ¹²ÕÒµ½ " + results.length + " ¸öÎı¾¿é");
  320.             }
  321.             return results;
  322.         } catch (e) {
  323.             log("[´íÎó] »ñȡʧ°Ü£º" + e);
  324.             return null;
  325.         }
  326.     }
  327. };

  328. // ==================== ÒµÎñ¹¦ÄÜ ====================

  329. /**
  330. * Ó¦ÓÃÆô¶¯Æ÷ - ͨ¹ý OCR ʶ±ð²¢µã»÷Ó¦ÓÃͼ±ê
  331. */
  332. var AppLauncher = {
  333.     /**
  334.      * Æô¶¯Ó¦ÓÃ
  335.      * @param {string} appName - Ó¦ÓÃÃû³Æ
  336.      * @param {number} maxRetries - ×î´óÖØÊÔ´ÎÊý
  337.      * @returns {boolean} ÊÇ·ñ³É¹¦
  338.      */
  339.     launchApp: function(appName, maxRetries) {
  340.         separator();
  341.         log("[Æô¶¯Æ÷] ¿ªÊ¼Æô¶¯Ó¦Óãº" + appName);
  342.         
  343.         var retries = 0;
  344.         var actualMaxRetries = maxRetries || AppConfig.retryTimes;
  345.         
  346.         while (retries < actualMaxRetries) {
  347.             try {
  348.                 retries++;
  349.                 log("[Æô¶¯Æ÷] µÚ " + retries + " ´Î³¢ÊÔ...");
  350.                
  351.                 // 1. ½ØÍ¼
  352.                 var image = ScreenManager.captureFull();
  353.                 if (!image) {
  354.                     continue;
  355.                 }
  356.                
  357.                 // 2. OCR ʶ±ð
  358.                 var ocrResult = ScreenManager.recognizeText(image, AppConfig.ocrRegion);
  359.                 if (!ocrResult) {
  360.                     image.close();
  361.                     continue;
  362.                 }
  363.                
  364.                 // 3. ²éÕÒÓ¦ÓÃÃû³Æ
  365.                 var appDetect = OcrSearchManager.findIncludeText(ocrResult, appName, AppConfig.ocrRegion);
  366.                
  367.                 if (appDetect) {
  368.                     log("[Æô¶¯Æ÷] ✓ ÕÒµ½Ó¦ÓÃͼ±ê");
  369.                     
  370.                     // 4. µã»÷Ó¦ÓÃ
  371.                     var success = ClickManager.clickOcrTarget(appDetect, "center");
  372.                     
  373.                     // 5. ÊÍ·Å×ÊÔ´
  374.                     image.close();
  375.                     
  376.                     if (success) {
  377.                         log("[Æô¶¯Æ÷] ✓✓ Ó¦ÓÃÆô¶¯³É¹¦£¡");
  378.                         separator();
  379.                         return true;
  380.                     }
  381.                 } else {
  382.                     log("[Æô¶¯Æ÷] δÕÒµ½Ó¦Óãº" + appName);
  383.                     image.close();
  384.                 }
  385.                
  386.                 // µÈ´ýºóÖØÊÔ
  387.                 if (retries < actualMaxRetries) {
  388.                     log("[Æô¶¯Æ÷] ×¼±¸ÖØÊÔ...");
  389.                     sleep(1000);
  390.                 }
  391.                
  392.             } catch (e) {
  393.                 log("[´íÎó] Æô¶¯Ó¦ÓÃʧ°Ü£º" + e);
  394.             }
  395.         }
  396.         
  397.         log("[Æô¶¯Æ÷] ✗✗ Ó¦ÓÃÆô¶¯Ê§°Ü (ÒÑÖØÊÔ " + actualMaxRetries + " ´Î)");
  398.         separator();
  399.         return false;
  400.     },
  401.    
  402.     /**
  403.      * ÅúÁ¿Æô¶¯Ó¦ÓÃ
  404.      * @param {Array} appList - Ó¦ÓÃÃû³ÆÁбí
  405.      */
  406.     launchMultipleApps: function(appList) {
  407.         separator();
  408.         log("[Æô¶¯Æ÷] ¿ªÊ¼ÅúÁ¿Æô¶¯Ó¦ÓÃ");
  409.         
  410.         var successCount = 0;
  411.         
  412.         for (var i = 0; i < appList.length; i++) {
  413.             log("[Æô¶¯Æ÷] ÕýÔÚÆô¶¯ (" + (i + 1) + "/" + appList.length + "): " + appList[i]);
  414.             
  415.             if (this.launchApp(appList[i], 2)) {
  416.                 successCount++;
  417.                 sleep(2000); // Ó¦ÓüäÇл»µÈ´ý
  418.             } else {
  419.                 log("[Æô¶¯Æ÷] Ìø¹ýʧ°ÜÓ¦Ó㬼ÌÐøÏÂÒ»¸ö");
  420.                 sleep(500);
  421.             }
  422.         }
  423.         
  424.         log("[Æô¶¯Æ÷] ÅúÁ¿Æô¶¯Íê³É£º³É¹¦ " + successCount + "/" + appList.length + " ¸ö");
  425.         separator();
  426.     },
  427.    
  428.     /**
  429.      * ÏÔʾÆÁÄ»ËùÓÐÎı¾ (µ÷ÊÔÓÃ)
  430.      */
  431.     showAllScreenText: function() {
  432.         separator();
  433.         log("[µ÷ÊÔ] ¿ªÊ¼Ê¶±ðÆÁÄ»ËùÓÐÎı¾");
  434.         
  435.         var image = ScreenManager.captureFull();
  436.         if (!image) {
  437.             return;
  438.         }
  439.         
  440.         var ocrResult = ScreenManager.recognizeText(image, [0, 0, 1, 1]);
  441.         if (!ocrResult) {
  442.             image.close();
  443.             return;
  444.         }
  445.         
  446.         var allText = ocrResult.getAllString();
  447.         log("[µ÷ÊÔ] ÆÁÄ»Îı¾ÄÚÈÝ:\n" + allText);
  448.         
  449.         var allDetects = OcrSearchManager.getAllDetects(ocrResult);
  450.         if (allDetects) {
  451.             log("[µ÷ÊÔ] Îı¾¿éÊýÁ¿£º" + allDetects.length);
  452.             for (var i = 0; i < allDetects.length; i++) {
  453.                 var detect = allDetects[i];
  454.                 log("[µ÷ÊÔ]   [" + (i + 1) + "] " + detect.text);
  455.             }
  456.         }
  457.         
  458.         image.close();
  459.         separator();
  460.     }
  461. };

  462. // ==================== UI ½çÃæ ====================

  463. /**
  464. * ´´½¨Ö÷¿ØÖÆÃæ°å
  465. */
  466. function createControlPanel() {
  467.     var mainTab = new TabView();
  468.     mainTab.setTitles(["Ó¦ÓÃÆô¶¯", "¿ì½Ý²Ù×÷", "ϵͳÉèÖÃ"]);
  469.    
  470.     mainTab.show(() => {
  471.         log("[UI] ¿ØÖÆÃæ°åÒÑÆô¶¯");
  472.         
  473.         // ÔÚÿ¸öÒ³Ãæ¶¥²¿Ìí¼Óµ¼º½À¸
  474.         mainTab.addView(0, createPageWithHeader(createAppLaunchView(mainTab), mainTab));
  475.         mainTab.addView(1, createPageWithHeader(createQuickActionsView(mainTab), mainTab));
  476.         mainTab.addView(2, createPageWithHeader(createSettingsView(mainTab), mainTab));
  477.         
  478.         log("[UI] ËùÓÐÒ³Ãæ¼ÓÔØÍê³É");
  479.     });
  480. }

  481. /**
  482. * ÎªÒ³ÃæÌí¼Óµ¼º½À¸
  483. * @param {Vertical} contentView - ÄÚÈÝÊÓͼ
  484. * @param {TabView} tabView - TabView ʵÀý
  485. * @returns {Vertical} ´øµ¼º½À¸µÄÍêÕûÒ³Ãæ
  486. */
  487. function createPageWithHeader(contentView, tabView) {
  488.     var pageContainer = new Vertical();
  489.    
  490.     // Ìí¼Óµ¼º½À¸
  491.     var header = createHeader(tabView);
  492.     pageContainer.addView(header);
  493.    
  494.     // Ìí¼ÓÄÚÈÝÇøÓò
  495.     pageContainer.addView(contentView);
  496.    
  497.     return pageContainer;
  498. }

  499. /**
  500. * ´´½¨ÉϱêÍ·£¨´ø·µ»Ø°´Å¥ºÍ·µ»Ø×ÀÃæ°´Å¥£©
  501. * @param {TabView} tabView - TabView ʵÀý
  502. * @returns {Vertical} ±êÍ·ÊÓͼ
  503. */
  504. function createHeader(tabView) {
  505.     var header = new Vertical();
  506.     header.setBackgroundColor(41, 128, 185);
  507.    
  508.     // µÚÒ»ÐУº·µ»Ø°´Å¥ + ±êÌâ + ×ÀÃæ°´Å¥
  509.     var titleBar = new Horizontal();
  510.    
  511.     // ·µ»Ø°´Å¥
  512.     var backBtn = new Button();
  513.     backBtn.setText("¡û ·µ»Ø");
  514.     backBtn.setColor(255, 255, 255);
  515.     backBtn.setTextColor(41, 128, 185);
  516.     backBtn.setWidth(80);
  517.     backBtn.setHeight(40);
  518.     backBtn.onClick(() => {
  519.         log("[µ¼º½] ·µ»ØÉÏÒ»Ò³");
  520.         try {
  521.             hid.back();
  522.         } catch (e) {
  523.             try {
  524.                 hid.home();
  525.                 log("[µ¼º½] ✓ ÒÑ·µ»ØÖ÷Ò³");
  526.             } catch (e2) {
  527.                 log("[¾¯¸æ] ·µ»ØÊ§°Ü£º" + e2);
  528.             }
  529.         }
  530.     });
  531.     titleBar.addView(backBtn);
  532.    
  533.     // µ¯ÐÔռ루ÈñêÌâ¾ÓÖУ©
  534.     var flexSpace1 = new Label();
  535.     flexSpace1.setWidth(-1);
  536.     titleBar.addView(flexSpace1);
  537.    
  538.     // Ó¦ÓñêÌâ
  539.     var titleLabel = new Label();
  540.     titleLabel.setText("&#128640; " + AppConfig.appName);
  541.     titleLabel.setTextColor(255, 255, 255);
  542.     titleLabel.setFontSize(16);
  543.     titleBar.addView(titleLabel);
  544.    
  545.     // µ¯ÐÔռλ
  546.     var flexSpace2 = new Label();
  547.     flexSpace2.setWidth(-1);
  548.     titleBar.addView(flexSpace2);
  549.    
  550.     // ·µ»Ø×ÀÃæ°´Å¥
  551.     var homeBtn = new Button();
  552.     homeBtn.setText("&#127968; ×ÀÃæ");
  553.     homeBtn.setColor(46, 204, 113);
  554.     homeBtn.setTextColor(255, 255, 255);
  555.     homeBtn.setWidth(90);
  556.     homeBtn.setHeight(40);
  557.     homeBtn.onClick(() => {
  558.         log("[µ¼º½] ·µ»Ø×ÀÃæ");
  559.         try {
  560.             hid.home();
  561.             log("[µ¼º½] ✓ ÒÑ·µ»Ø×ÀÃæ");
  562.         } catch (e) {
  563.             log("[´íÎó] ·µ»Ø×ÀÃæÊ§°Ü£º" + e);
  564.         }
  565.     });
  566.     titleBar.addView(homeBtn);
  567.    
  568.     header.addView(titleBar);
  569.    
  570.     return header;
  571. }

  572. /**
  573. * Ó¦ÓÃÆô¶¯Ò³Ãæ
  574. * @param {TabView} mainTab - TabView ʵÀý
  575. * @returns {Vertical} Ò³ÃæÊÓͼ
  576. */
  577. function createAppLaunchView(mainTab) {
  578.     var v = new Vertical();
  579.     v.setBackgroundColor(245, 247, 250);
  580.    
  581.     // ±êÌâ
  582.     var header = new Horizontal();
  583.     header.setAlignment("center");
  584.     var title = new Label();
  585.     title.setText("&#128640; Ó¦ÓÃÆô¶¯Æ÷");
  586.     title.setTextColor(41, 128, 185);
  587.     title.setFontSize(24);
  588.     header.addView(title);
  589.     v.addView(header);
  590.    
  591.     var divider = new Label();
  592.     divider.setHeight(2);
  593.     divider.setBackgroundColor(200, 200, 200);
  594.     v.addView(divider);
  595.    
  596.     // ³£ÓÃÓ¦Óð´Å¥
  597.     var appContainer = new Vertical();
  598.     appContainer.setBackgroundColor(255, 255, 255);
  599.    
  600.     var apps = [
  601.         { name: "΢ÐÅ", color: [46, 204, 113] },
  602.         { name: "QQ", color: [52, 152, 219] },
  603.         { name: "Ö§¸¶±¦", color: [52, 73, 94] },
  604.         { name: "¶¶Òô", color: [231, 76, 60] },
  605.         { name: "¿ìÊÖ", color: [241, 196, 15] },
  606.         { name: "΢²©", color: [230, 0, 18] }
  607.     ];
  608.    
  609.     for (var i = 0; i < apps.length; i++) {
  610.         var appBtn = new Button();
  611.         appBtn.setText("Æô¶¯ " + apps[i].name);
  612.         appBtn.setColor(apps[i].color[0], apps[i].color[1], apps[i].color[2]);
  613.         appBtn.setTextColor(255, 255, 255);
  614.         appBtn.setHeight(45);
  615.         (function(appName) {
  616.             appBtn.onClick(() => {
  617.                 log("[UI] µã»÷Æô¶¯£º" + appName);
  618.                 AppLauncher.launchApp(appName, 3);
  619.             });
  620.         })(apps[i].name);
  621.         appContainer.addView(appBtn);
  622.     }
  623.    
  624.     v.addView(appContainer);
  625.    
  626.     // ×Ô¶¨ÒåÊäÈë
  627.     var inputContainer = new Horizontal();
  628.     inputContainer.setAlignment("center_vertical");
  629.    
  630.     var inputLabel = new Label();
  631.     inputLabel.setText("Ó¦ÓÃÃû³Æ:");
  632.     inputLabel.setTextColor(50, 50, 50);
  633.     inputLabel.setWidth(100);
  634.     inputContainer.addView(inputLabel);
  635.    
  636.     var appInput = new Input();
  637.     appInput.setWidth(200);
  638.     inputContainer.addView(appInput);
  639.    
  640.     v.addView(inputContainer);
  641.    
  642.     var customLaunchBtn = new Button();
  643.     customLaunchBtn.setText("Æô¶¯×Ô¶¨ÒåÓ¦ÓÃ");
  644.     customLaunchBtn.setColor(155, 89, 182);
  645.     customLaunchBtn.setTextColor(255, 255, 255);
  646.     customLaunchBtn.setHeight(45);
  647.     customLaunchBtn.onClick(() => {
  648.         var appName = appInput.getText();
  649.         if (appName) {
  650.             log("[UI] Æô¶¯×Ô¶¨ÒåÓ¦Óãº" + appName);
  651.             AppLauncher.launchApp(appName, 3);
  652.             appInput.setText("");
  653.         } else {
  654.             log("[UI] ÇëÊäÈëÓ¦ÓÃÃû³Æ");
  655.         }
  656.     });
  657.     v.addView(customLaunchBtn);
  658.    
  659.     // ÅúÁ¿Æô¶¯
  660.     var batchBtn = new Button();
  661.     batchBtn.setText("ÅúÁ¿Æô¶¯ (΢ÐÅ+QQ+Ö§¸¶±¦)");
  662.     batchBtn.setColor(52, 152, 219);
  663.     batchBtn.setTextColor(255, 255, 255);
  664.     batchBtn.setHeight(45);
  665.     batchBtn.onClick(() => {
  666.         AppLauncher.launchMultipleApps(["΢ÐÅ", "QQ", "Ö§¸¶±¦"]);
  667.     });
  668.     v.addView(batchBtn);
  669.    
  670.     // ¹Ø±Õ°´Å¥
  671.     var closeBtn = new Button();
  672.     closeBtn.setText("❌ ¹Ø±ÕÃæ°å");
  673.     closeBtn.setColor(149, 165, 166);
  674.     closeBtn.setTextColor(255, 255, 255);
  675.     closeBtn.setHeight(40);
  676.     closeBtn.onClick(() => {
  677.         log("[UI] ¹Ø±Õ¿ØÖÆÃæ°å");
  678.         if (mainTab) {
  679.             mainTab.dismiss();
  680.         }
  681.     });
  682.     v.addView(closeBtn);
  683.    
  684.     return v;
  685. }

  686. /**
  687. * ¿ì½Ý²Ù×÷Ò³Ãæ
  688. * @param {TabView} mainTab - TabView ʵÀý
  689. * @returns {Vertical} Ò³ÃæÊÓͼ
  690. */
  691. function createQuickActionsView(mainTab) {
  692.     var v = new Vertical();
  693.     v.setBackgroundColor(245, 247, 250);
  694.    
  695.     // ±êÌâ
  696.     var header = new Horizontal();
  697.     header.setAlignment("center");
  698.     var title = new Label();
  699.     title.setText("⚡ ¿ì½Ý²Ù×÷");
  700.     title.setTextColor(41, 128, 185);
  701.     title.setFontSize(24);
  702.     header.addView(title);
  703.     v.addView(header);
  704.    
  705.     var divider = new Label();
  706.     divider.setHeight(2);
  707.     divider.setBackgroundColor(200, 200, 200);
  708.     v.addView(divider);
  709.    
  710.     // ¿ì½Ý°´Å¥×é
  711.     var quickContainer = new Vertical();
  712.     quickContainer.setBackgroundColor(255, 255, 255);
  713.    
  714.     // ÆÁÄ»ÖÐÐĵã»÷
  715.     var centerClickBtn = new Button();
  716.     centerClickBtn.setText("µã»÷ÆÁÄ»ÖÐÐÄ");
  717.     centerClickBtn.setColor(46, 204, 113);
  718.     centerClickBtn.setTextColor(255, 255, 255);
  719.     centerClickBtn.setHeight(45);
  720.     centerClickBtn.onClick(() => {
  721.         log("[¿ì½Ý] µã»÷ÆÁÄ»ÖÐÐÄ");
  722.         ClickManager.clickPercent(0.5, 0.5);
  723.     });
  724.     quickContainer.addView(centerClickBtn);
  725.    
  726.     // Ë«»÷ÆÁÄ»ÖÐÐÄ
  727.     var doubleClickBtn = new Button();
  728.     doubleClickBtn.setText("Ë«»÷ÆÁÄ»ÖÐÐÄ");
  729.     doubleClickBtn.setColor(241, 196, 15);
  730.     doubleClickBtn.setTextColor(50, 50, 50);
  731.     doubleClickBtn.setHeight(45);
  732.     doubleClickBtn.onClick(() => {
  733.         log("[¿ì½Ý] Ë«»÷ÆÁÄ»ÖÐÐÄ");
  734.         ClickManager.doubleClick(0.5, 0.5);
  735.     });
  736.     quickContainer.addView(doubleClickBtn);
  737.    
  738.     // ÏÔʾÆÁÄ»Îı¾
  739.     var showTextBtn = new Button();
  740.     showTextBtn.setText("ÏÔʾÆÁÄ»ËùÓÐÎı¾");
  741.     showTextBtn.setColor(52, 152, 219);
  742.     showTextBtn.setTextColor(255, 255, 255);
  743.     showTextBtn.setHeight(45);
  744.     showTextBtn.onClick(() => {
  745.         AppLauncher.showAllScreenText();
  746.     });
  747.     quickContainer.addView(showTextBtn);
  748.    
  749.     // ˢРOCR
  750.     var refreshOcrBtn = new Button();
  751.     refreshOcrBtn.setText("ˢРOCR »º´æ");
  752.     refreshOcrBtn.setColor(155, 89, 182);
  753.     refreshOcrBtn.setTextColor(255, 255, 255);
  754.     refreshOcrBtn.setHeight(45);
  755.     refreshOcrBtn.onClick(() => {
  756.         log("[¿ì½Ý] ˢРOCR »º´æ");
  757.         ScreenManager.lockCache();
  758.         sleep(500);
  759.         ScreenManager.unlockCache();
  760.         log("[¿ì½Ý] Ë¢ÐÂÍê³É");
  761.     });
  762.     quickContainer.addView(refreshOcrBtn);
  763.    
  764.     v.addView(quickContainer);
  765.    
  766.     return v;
  767. }

  768. /**
  769. * ϵͳÉèÖÃÒ³Ãæ
  770. * @param {TabView} mainTab - TabView ʵÀý
  771. * @returns {Vertical} Ò³ÃæÊÓͼ
  772. */
  773. function createSettingsView(mainTab) {
  774.     var v = new Vertical();
  775.     v.setBackgroundColor(245, 247, 250);
  776.    
  777.     // ±êÌâ
  778.     var header = new Horizontal();
  779.     header.setAlignment("center");
  780.     var title = new Label();
  781.     title.setText("⚙️ ϵͳÉèÖÃ");
  782.     title.setTextColor(41, 128, 185);
  783.     title.setFontSize(24);
  784.     header.addView(title);
  785.     v.addView(header);
  786.    
  787.     var divider = new Label();
  788.     divider.setHeight(2);
  789.     divider.setBackgroundColor(200, 200, 200);
  790.     v.addView(divider);
  791.    
  792.     // ÉèÖÃÈÝÆ÷
  793.     var settingsContainer = new Vertical();
  794.     settingsContainer.setBackgroundColor(255, 255, 255);
  795.    
  796.     // ÈÕÖ¾¿ª¹Ø
  797.     var logCheck = new CheckBox();
  798.     logCheck.setText("ÆôÓÃÈÕÖ¾¼Ç¼");
  799.     logCheck.setID("ÈÕÖ¾¿ª¹Ø");
  800.     logCheck.setDefultSelect(); // ĬÈÏÑ¡ÖÐ
  801.     logCheck.onClick(() => {
  802.         AppConfig.logEnabled = logCheck.isSelect();
  803.         log("[ÉèÖÃ] ÈÕÖ¾¼Ç¼£º" + (AppConfig.logEnabled ? "ÒÑ¿ªÆô" : "ÒѹرÕ"));
  804.     });
  805.     settingsContainer.addView(logCheck);
  806.    
  807.     // µã»÷ÑÓ³ÙÉèÖÃ
  808.     var delayContainer = new Horizontal();
  809.     delayContainer.setAlignment("center_vertical");
  810.    
  811.     var delayLabel = new Label();
  812.     delayLabel.setText("µã»÷ÑÓ³Ù:");
  813.     delayLabel.setTextColor(50, 50, 50);
  814.     delayLabel.setWidth(100);
  815.     delayContainer.addView(delayLabel);
  816.    
  817.     var delayInput = new Input();
  818.     delayInput.setWidth(100);
  819.     delayInput.setText(String(AppConfig.clickDelay));
  820.     delayContainer.addView(delayInput);
  821.    
  822.     var delayUnit = new Label();
  823.     delayUnit.setText(" ms");
  824.     delayUnit.setTextColor(100, 100, 100);
  825.     delayContainer.addView(delayUnit);
  826.    
  827.     settingsContainer.addView(delayContainer);
  828.    
  829.     var saveDelayBtn = new Button();
  830.     saveDelayBtn.setText("±£´æÑÓ³ÙÉèÖÃ");
  831.     saveDelayBtn.setColor(52, 152, 219);
  832.     saveDelayBtn.setTextColor(255, 255, 255);
  833.     saveDelayBtn.setHeight(40);
  834.     saveDelayBtn.onClick(() => {
  835.         var delayText = delayInput.getText();
  836.         var delay = parseInt(delayText);
  837.         if (delay > 0) {
  838.             AppConfig.clickDelay = delay;
  839.             log("[ÉèÖÃ] µã»÷ÑÓ³ÙÒѱ£´æ£º" + delay + "ms");
  840.         } else {
  841.             log("[ÉèÖÃ] ÇëÊäÈëÓÐЧµÄÑÓ³ÙÖµ");
  842.         }
  843.     });
  844.     settingsContainer.addView(saveDelayBtn);
  845.    
  846.     // ÖØÊÔ´ÎÊýÉèÖÃ
  847.     var retryContainer = new Horizontal();
  848.     retryContainer.setAlignment("center_vertical");
  849.    
  850.     var retryLabel = new Label();
  851.     retryLabel.setText("ÖØÊÔ´ÎÊý:");
  852.     retryLabel.setTextColor(50, 50, 50);
  853.     retryLabel.setWidth(100);
  854.     retryContainer.addView(retryLabel);
  855.    
  856.     var retryInput = new Input();
  857.     retryInput.setWidth(100);
  858.     retryInput.setText(String(AppConfig.retryTimes));
  859.     retryContainer.addView(retryInput);
  860.    
  861.     settingsContainer.addView(retryContainer);
  862.    
  863.     var saveRetryBtn = new Button();
  864.     saveRetryBtn.setText("±£´æÖØÊÔ´ÎÊý");
  865.     saveRetryBtn.setColor(46, 204, 113);
  866.     saveRetryBtn.setTextColor(255, 255, 255);
  867.     saveRetryBtn.setHeight(40);
  868.     saveRetryBtn.onClick(() => {
  869.         var retryText = retryInput.getText();
  870.         var retry = parseInt(retryText);
  871.         if (retry > 0) {
  872.             AppConfig.retryTimes = retry;
  873.             log("[ÉèÖÃ] ÖØÊÔ´ÎÊýÒѱ£´æ£º" + retry);
  874.         } else {
  875.             log("[ÉèÖÃ] ÇëÊäÈëÓÐЧµÄÖØÊÔ´ÎÊý");
  876.         }
  877.     });
  878.     settingsContainer.addView(saveRetryBtn);
  879.    
  880.     v.addView(settingsContainer);
  881.    
  882.     // ¹ØÓÚÐÅÏ¢
  883.     var aboutDivider = new Label();
  884.     aboutDivider.setHeight(1);
  885.     aboutDivider.setBackgroundColor(180, 180, 180);
  886.     v.addView(aboutDivider);
  887.    
  888.     var aboutLabel = new Label();
  889.     aboutLabel.setText("\n" + AppConfig.appName + " v" + AppConfig.version + "\nQQ Ⱥ£º711841924\n»ùÓÚ AIWROK ¿ª·¢Æ½Ì¨");
  890.     aboutLabel.setTextColor(100, 100, 100);
  891.     aboutLabel.setFontSize(14);
  892.     v.addView(aboutLabel);
  893.    
  894.     return v;
  895. }

  896. // ==================== Ö÷³ÌÐòÈë¿Ú ====================

  897. /**
  898. * Æô¶¯ÑÝʾģʽ - չʾËùÓй¦ÄÜ
  899. */
  900. function runDemo() {
  901.     log("========================================");
  902.     log("&#127822; ÖÇÄÜÆÁÄ»×Ô¶¯»¯ÖúÊÖ Pro v" + AppConfig.version);
  903.     log("========================================");
  904.     log("[ÑÝʾ] ¿ªÊ¼¹¦ÄÜÑÝʾ...");
  905.    
  906.     // 1. ÏÔʾÆÁÄ»ÐÅÏ¢
  907.     var screenSize = ScreenManager.getScreenSize();
  908.     log("[ÑÝʾ] ÆÁÄ»·Ö±æÂÊ£º" + screenSize.width + "x" + screenSize.height);
  909.    
  910.     // 2. ½ØÍ¼²âÊÔ
  911.     log("[ÑÝʾ] Ö´ÐнØÍ¼²âÊÔ...");
  912.     var testImage = ScreenManager.captureFull();
  913.     if (testImage) {
  914.         log("[ÑÝʾ] ✓ ½ØÍ¼³É¹¦");
  915.         testImage.close();
  916.     }
  917.    
  918.     // 3. ¿ì½Ý²Ù×÷ÑÝʾ
  919.     log("[ÑÝʾ] µã»÷ÆÁÄ»ÖÐÐÄ...");
  920.     ClickManager.clickPercent(0.5, 0.5);
  921.    
  922.     sleep(1000);
  923.    
  924.     log("[ÑÝʾ] Ë«»÷ÆÁÄ»ÖÐÐÄ...");
  925.     ClickManager.doubleClick(0.5, 0.5);
  926.    
  927.     separator();
  928.     log("[ÑÝʾ] ¹¦ÄÜÑÝʾÍê³É!");
  929.     log("[Ìáʾ] Çë´ò¿ª¿ØÖÆÃæ°å½øÐиü¶à²Ù×÷");
  930.     separator();
  931. }

  932. /**
  933. * Ö÷º¯Êý - Æô¶¯Ó¦ÓÃ
  934. */
  935. function main() {
  936.     try {
  937.         // ÔËÐÐÑÝʾ
  938.         runDemo();
  939.         
  940.         // Æô¶¯¿ØÖÆÃæ°å
  941.         log("[ϵͳ] ÕýÔÚÆô¶¯¿ØÖÆÃæ°å...");
  942.         createControlPanel();
  943.         
  944.         log("[ϵͳ] ✓ ϵͳÆô¶¯³É¹¦");
  945.         
  946.     } catch (e) {
  947.         log("[ÖÂÃü´íÎó] ϵͳÆô¶¯Ê§°Ü£º" + e);
  948.     }
  949. }

  950. // ==================== Ö´ÐÐÖ÷³ÌÐò ====================
  951. main();
¸´ÖÆ´úÂë



»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

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

¹Ø±Õ

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

map2

GMT+8, 2026-3-23 12:43 , Processed in 0.214067 second(s), 35 queries .

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