信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 1|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] 苹果脚本屏幕类screen例子

[复制链接]

1888

主题

1898

帖子

1万

积分

积分
11048

资讯缩略图:

资讯发布日期:2026-03-23

资讯发布简介:苹果脚本屏幕类screen例子

资讯关键词:苹果脚本屏幕类screen例子

资讯所属分类:IT资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
苹果脚本屏幕类screen例子 苹果脚本屏幕类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();
复制代码





unto安卓手机config配置演示实列nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
群发软件苹果脚本屏幕类screen例子
苹果脚本屏幕类screen例子
群发软件安卓手机config配置演示实列
安卓手机config配置演示实列
群发软件苹果脚本配置config小实例
苹果脚本配置config小实例 https://www.yuque.com/aiwork/dcvhmb/qolobpysdg0hvi2e
群发软件苹果脚本矩形类rect小实例
苹果脚本矩形类rect小实例
群发软件AIWROK安卓苹果平台设计的实用工具库
AIWROK安卓苹果平台设计的实用工具库
群发软件AIWROK软件Function导入方法实例演示
AIWROK软件Function导入方法实例演示
群发软件苹果脚本实例1项目project应用示例
苹果脚本实例1项目project应用示例
群发软件苹果脚本实例1剪贴板功能集成
苹果脚本实例1剪贴板功能集成
群发软件苹果iOS脚本Detect类系统性使用示例
苹果iOS脚本Detect类系统性使用示例
群发软件AIWROK苹果系统打印H5界面日志输出
AIWROK苹果系统打印H5界面日志输出
群发软件H5案例自动化看广告撸金币系统
H5案例自动化看广告撸金币系统
群发软件AIWROK苹果脚本H5任务执行小例子
AIWROK苹果脚本H5任务执行小例子
群发软件AIWROK软件苹果水平容器[Horizontal]小实例
AIWROK软件苹果水平容器[Horizontal]小实例
群发软件AIWROK苹果脚本实例1界面UI输入框类[Input]
AIWROK苹果脚本实例1界面UI输入框类
群发软件AIWROK软件苹果脚本案例1空白站位[Space]方法
AIWROK软件苹果脚本案例1空白站位[Space]方法
群发软件AIWROK软件苹查系统复选框用法
AIWROK软件苹查系统复选框用法
群发软件苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
群发软件AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
群发软件IOS苹果脚本View的完整功能实例
IOS苹果脚本View的完整功能实例
群发软件AIWROK苹果系统实例演示1标签类[Label]方法
AIWROK苹果系统实例演示1标签类[Label]方法
信息发布软件AIWROK软件苹果UI按钮Button方法示例
AIWROK软件苹果UI按钮Button方法示例
信息发布软件AIWROK软件苹果TAB界面视图示例
AIWROK软件苹果TAB界面视图示例
信息发布软件AIWROK苹果系统自带view视图简洁UI界面示例
AIWROK苹果系统自带view视图简洁UI界面示例
信息发布软件汇集HID安卓输入文字的方法和复制粘贴示例
汇集HID安卓输入文字的方法和复制粘贴示例
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-3-23 11:08 , Processed in 0.365702 second(s), 52 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表