YYPOST群发软件 发表于 2026-3-23 09:50:50

苹果脚本屏幕类screen例子

苹果脚本屏幕类screen例子





/**
* ============================================
* AIWROK 智能屏幕自动化助手 Pro
* 版本:1.0.0
* 平台:iOS (AIWROK)
* QQ 群:711841924 群一,苹果内测群 528816639
* ============================================
*
* 功能特性:
* 1. 🎯 OCR 智能识别屏幕应用图标
* 2. 👆 自动点击打开目标应用
* 3. 📊 H5 可视化控制面板
* 4. 📝 实时日志记录系统
* 5. ⚡ 一键快捷操作
* 6. 🔍 自定义区域扫描
*/

// ==================== 全局配置 ====================
var AppConfig = {
    appName: "智能屏幕自动化助手 Pro",
    version: "1.0.0",
    debugMode: true,
    ocrRegion: , // 默认全屏 OCR
    clickDelay: 500, // 点击延迟 (ms)
    retryTimes: 3, // 重试次数
    logEnabled: true
};

// ==================== 工具函数 ====================

/**
* 阻塞延迟函数
* @param {number} ms - 毫秒数
*/
function sleep(ms) {
    var start = Date.now();
    while (Date.now() - start < ms) {
      // 阻塞等待
    }
}

/**
* 输出日志 (兼容多种日志方式)
* @param {string} message - 日志内容
*/
function log(message) {
    if (AppConfig.logEnabled) {
      printl(message);
      // 同时发送到 LogManagerH5(如果可用)
      try {
            LogManagerH5.info(message);
      } catch (e) {
            // LogManagerH5 不可用时忽略
      }
    }
}

/**
* 输出分隔线
*/
function separator() {
    log("========================================");
}

// ==================== 核心功能类 ====================

/**
* 屏幕操作管理器
*/
var ScreenManager = {
    /**
   * 获取屏幕尺寸
   */
    getScreenSize: function() {
      return {
            width: screen.getScreenWidth(),
            height: screen.getScreenHeight()
      };
    },
   
    /**
   * 全尺寸截图
   * @returns {Image} 截图对象
   */
    captureFull: function() {
      try {
            log("[截图] 执行全尺寸截图...");
            var image = screen.screenShotFull();
            log("[截图] 截图完成");
            return image;
      } catch (e) {
            log("[错误] 截图失败:" + e);
            return null;
      }
    },
   
    /**
   * 缩放截图
   * @param {number} width - 宽度
   * @param {number} height - 高度
   * @param {number} compress - 压缩率 (0-100)
   * @returns {Image} 截图对象
   */
    captureScaled: function(width, height, compress) {
      try {
            log("[截图] 执行缩放截图:" + width + "x" + height + ", 压缩率:" + compress);
            var image = screen.screenShot(width, height, compress);
            log("[截图] 截图完成");
            return image;
      } catch (e) {
            log("[错误] 截图失败:" + e);
            return null;
      }
    },
   
    /**
   * 执行 OCR 识别
   * @param {Image} image - 图像对象
   * @param {Array} region - 识别区域
   * @returns {OcrResult} OCR 结果
   */
    recognizeText: function(image, region) {
      try {
            var ocrRegion = region || AppConfig.ocrRegion;
            log(" 开始识别,区域:[" + ocrRegion.join(", ") + "]");
            var result = image.ocr(ocrRegion, ocrRegion, ocrRegion, ocrRegion);
            log(" 识别完成");
            return result;
      } catch (e) {
            log("[错误] OCR 识别失败:" + e);
            return null;
      }
    },
   
    /**
   * 锁定屏幕缓存
   */
    lockCache: function() {
      try {
            screen.lockScreen();
            log("[缓存] 屏幕缓存已锁定");
      } catch (e) {
            log("[错误] 锁定缓存失败:" + e);
      }
    },
   
    /**
   * 解锁屏幕缓存
   */
    unlockCache: function() {
      try {
            screen.unLockScreen();
            log("[缓存] 屏幕缓存已解锁");
      } catch (e) {
            log("[错误] 解锁缓存失败:" + e);
      }
    }
};

/**
* 点击操作管理器
*/
var ClickManager = {
    /**
   * 百分比位置点击
   * @param {number} xPercent - X 轴百分比 (0-1)
   * @param {number} yPercent - Y 轴百分比 (0-1)
   */
    clickPercent: function(xPercent, yPercent) {
      try {
            log("[点击] 百分比坐标:(" + xPercent + ", " + yPercent + ")");
            hid.clickPercent(xPercent, yPercent);
            sleep(AppConfig.clickDelay);
            log("[点击] 点击成功");
      } catch (e) {
            log("[错误] 点击失败:" + e);
      }
    },
   
    /**
   * 绝对坐标点击
   * @param {number} x - X 坐标
   * @param {number} y - Y 坐标
   */
    clickAbsolute: function(x, y) {
      try {
            log("[点击] 绝对坐标:(" + x + ", " + y + ")");
            hid.click(x, y);
            sleep(AppConfig.clickDelay);
            log("[点击] 点击成功");
      } catch (e) {
            log("[错误] 点击失败:" + e);
      }
    },
   
    /**
   * 点击 OCR 识别到的文本
   * @param {Detect} detect - OCR 检测对象
   * @param {string} clickType - 点击类型:"center" | "random"
   */
    clickOcrTarget: function(detect, clickType) {
      try {
            if (!detect) {
                log("[警告] 点击目标为空");
                return false;
            }
            
            var rect = detect.getRect();
            var centerX = rect.getCenterX();
            var centerY = rect.getCenterY();
            
            if (clickType === "center") {
                log("[点击] 点击文本中心:(" + centerX + ", " + centerY + ")");
                this.clickAbsolute(centerX, centerY);
            } else {
                log("[点击] 随机点击文本区域");
                detect.clickRandom();
            }
            
            log("[点击] 点击成功");
            return true;
      } catch (e) {
            log("[错误] 点击失败:" + e);
            return false;
      }
    },
   
    /**
   * 双击操作
   * @param {number} xPercent - X 轴百分比
   * @param {number} yPercent - Y 轴百分比
   */
    doubleClick: function(xPercent, yPercent) {
      try {
            log("[双击] 百分比坐标:(" + xPercent + ", " + yPercent + ")");
            hid.doubleClickPercent(xPercent, yPercent);
            sleep(AppConfig.clickDelay * 2);
            log("[双击] 双击成功");
      } catch (e) {
            log("[错误] 双击失败:" + e);
      }
    }
};

/**
* OCR 文本查找管理器
*/
var OcrSearchManager = {
    /**
   * 查找精确文本
   * @param {OcrResult} ocrResult - OCR 结果
   * @param {string} text - 要查找的文本
   * @param {Array} region - 查找区域
   * @returns {Detect} 检测结果
   */
    findExactText: function(ocrResult, text, region) {
      try {
            log("[查找] 精确查找文本:\"" + text + "\"");
            var result = ocrResult.findText(text, region || AppConfig.ocrRegion);
            if (result) {
                log("[查找] 找到文本");
            } else {
                log("[查找] 未找到文本");
            }
            return result;
      } catch (e) {
            log("[错误] 查找失败:" + e);
            return null;
      }
    },
   
    /**
   * 查找包含文本
   * @param {OcrResult} ocrResult - OCR 结果
   * @param {string} text - 要查找的文本
   * @param {Array} region - 查找区域
   * @returns {Detect} 检测结果
   */
    findIncludeText: function(ocrResult, text, region) {
      try {
            log("[查找] 查找包含文本:\"" + text + "\"");
            var result = ocrResult.findIncludeText(text, region || AppConfig.ocrRegion);
            if (result) {
                log("[查找] 找到文本");
            } else {
                log("[查找] 未找到文本");
            }
            return result;
      } catch (e) {
            log("[错误] 查找失败:" + e);
            return null;
      }
    },
   
    /**
   * 使用正则表达式查找
   * @param {OcrResult} ocrResult - OCR 结果
   * @param {string} regex - 正则表达式
   * @param {Array} region - 查找区域
   * @returns {Array} 检测结果数组
   */
    findTextWithRegex: function(ocrResult, regex, region) {
      try {
            log("[查找] 使用正则查找:" + regex);
            var results = ocrResult.findTextWithRegex(regex, region || AppConfig.ocrRegion);
            if (results && results.length > 0) {
                log("[查找] 找到 " + results.length + " 个匹配项");
            } else {
                log("[查找] 未找到匹配项");
            }
            return results;
      } catch (e) {
            log("[错误] 查找失败:" + e);
            return null;
      }
    },
   
    /**
   * 获取所有检测结果
   * @param {OcrResult} ocrResult - OCR 结果
   * @returns {Array} 所有检测结果
   */
    getAllDetects: function(ocrResult) {
      try {
            log("[查找] 获取所有检测结果");
            var results = ocrResult.getAllDetect();
            if (results) {
                log("[查找] 共找到 " + results.length + " 个文本块");
            }
            return results;
      } catch (e) {
            log("[错误] 获取失败:" + e);
            return null;
      }
    }
};

// ==================== 业务功能 ====================

/**
* 应用启动器 - 通过 OCR 识别并点击应用图标
*/
var AppLauncher = {
    /**
   * 启动应用
   * @param {string} appName - 应用名称
   * @param {number} maxRetries - 最大重试次数
   * @returns {boolean} 是否成功
   */
    launchApp: function(appName, maxRetries) {
      separator();
      log("[启动器] 开始启动应用:" + appName);
      
      var retries = 0;
      var actualMaxRetries = maxRetries || AppConfig.retryTimes;
      
      while (retries < actualMaxRetries) {
            try {
                retries++;
                log("[启动器] 第 " + retries + " 次尝试...");
               
                // 1. 截图
                var image = ScreenManager.captureFull();
                if (!image) {
                  continue;
                }
               
                // 2. OCR 识别
                var ocrResult = ScreenManager.recognizeText(image, AppConfig.ocrRegion);
                if (!ocrResult) {
                  image.close();
                  continue;
                }
               
                // 3. 查找应用名称
                var appDetect = OcrSearchManager.findIncludeText(ocrResult, appName, AppConfig.ocrRegion);
               
                if (appDetect) {
                  log("[启动器] ✓ 找到应用图标");
                  
                  // 4. 点击应用
                  var success = ClickManager.clickOcrTarget(appDetect, "center");
                  
                  // 5. 释放资源
                  image.close();
                  
                  if (success) {
                        log("[启动器] ✓✓ 应用启动成功!");
                        separator();
                        return true;
                  }
                } else {
                  log("[启动器] 未找到应用:" + appName);
                  image.close();
                }
               
                // 等待后重试
                if (retries < actualMaxRetries) {
                  log("[启动器] 准备重试...");
                  sleep(1000);
                }
               
            } catch (e) {
                log("[错误] 启动应用失败:" + e);
            }
      }
      
      log("[启动器] ✗✗ 应用启动失败 (已重试 " + actualMaxRetries + " 次)");
      separator();
      return false;
    },
   
    /**
   * 批量启动应用
   * @param {Array} appList - 应用名称列表
   */
    launchMultipleApps: function(appList) {
      separator();
      log("[启动器] 开始批量启动应用");
      
      var successCount = 0;
      
      for (var i = 0; i < appList.length; i++) {
            log("[启动器] 正在启动 (" + (i + 1) + "/" + appList.length + "): " + appList);
            
            if (this.launchApp(appList, 2)) {
                successCount++;
                sleep(2000); // 应用间切换等待
            } else {
                log("[启动器] 跳过失败应用,继续下一个");
                sleep(500);
            }
      }
      
      log("[启动器] 批量启动完成:成功 " + successCount + "/" + appList.length + " 个");
      separator();
    },
   
    /**
   * 显示屏幕所有文本 (调试用)
   */
    showAllScreenText: function() {
      separator();
      log("[调试] 开始识别屏幕所有文本");
      
      var image = ScreenManager.captureFull();
      if (!image) {
            return;
      }
      
      var ocrResult = ScreenManager.recognizeText(image, );
      if (!ocrResult) {
            image.close();
            return;
      }
      
      var allText = ocrResult.getAllString();
      log("[调试] 屏幕文本内容:\n" + allText);
      
      var allDetects = OcrSearchManager.getAllDetects(ocrResult);
      if (allDetects) {
            log("[调试] 文本块数量:" + allDetects.length);
            for (var i = 0; i < allDetects.length; i++) {
                var detect = allDetects;
                log("[调试]   [" + (i + 1) + "] " + detect.text);
            }
      }
      
      image.close();
      separator();
    }
};

// ==================== UI 界面 ====================

/**
* 创建主控制面板
*/
function createControlPanel() {
    var mainTab = new TabView();
    mainTab.setTitles(["应用启动", "快捷操作", "系统设置"]);
   
    mainTab.show(() => {
      log(" 控制面板已启动");
      
      // 在每个页面顶部添加导航栏
      mainTab.addView(0, createPageWithHeader(createAppLaunchView(mainTab), mainTab));
      mainTab.addView(1, createPageWithHeader(createQuickActionsView(mainTab), mainTab));
      mainTab.addView(2, createPageWithHeader(createSettingsView(mainTab), mainTab));
      
      log(" 所有页面加载完成");
    });
}

/**
* 为页面添加导航栏
* @param {Vertical} contentView - 内容视图
* @param {TabView} tabView - TabView 实例
* @returns {Vertical} 带导航栏的完整页面
*/
function createPageWithHeader(contentView, tabView) {
    var pageContainer = new Vertical();
   
    // 添加导航栏
    var header = createHeader(tabView);
    pageContainer.addView(header);
   
    // 添加内容区域
    pageContainer.addView(contentView);
   
    return pageContainer;
}

/**
* 创建上标头(带返回按钮和返回桌面按钮)
* @param {TabView} tabView - TabView 实例
* @returns {Vertical} 标头视图
*/
function createHeader(tabView) {
    var header = new Vertical();
    header.setBackgroundColor(41, 128, 185);
   
    // 第一行:返回按钮 + 标题 + 桌面按钮
    var titleBar = new Horizontal();
   
    // 返回按钮
    var backBtn = new Button();
    backBtn.setText("← 返回");
    backBtn.setColor(255, 255, 255);
    backBtn.setTextColor(41, 128, 185);
    backBtn.setWidth(80);
    backBtn.setHeight(40);
    backBtn.onClick(() => {
      log("[导航] 返回上一页");
      try {
            hid.back();
      } catch (e) {
            try {
                hid.home();
                log("[导航] ✓ 已返回主页");
            } catch (e2) {
                log("[警告] 返回失败:" + e2);
            }
      }
    });
    titleBar.addView(backBtn);
   
    // 弹性占位(让标题居中)
    var flexSpace1 = new Label();
    flexSpace1.setWidth(-1);
    titleBar.addView(flexSpace1);
   
    // 应用标题
    var titleLabel = new Label();
    titleLabel.setText("&#128640; " + AppConfig.appName);
    titleLabel.setTextColor(255, 255, 255);
    titleLabel.setFontSize(16);
    titleBar.addView(titleLabel);
   
    // 弹性占位
    var flexSpace2 = new Label();
    flexSpace2.setWidth(-1);
    titleBar.addView(flexSpace2);
   
    // 返回桌面按钮
    var homeBtn = new Button();
    homeBtn.setText("&#127968; 桌面");
    homeBtn.setColor(46, 204, 113);
    homeBtn.setTextColor(255, 255, 255);
    homeBtn.setWidth(90);
    homeBtn.setHeight(40);
    homeBtn.onClick(() => {
      log("[导航] 返回桌面");
      try {
            hid.home();
            log("[导航] ✓ 已返回桌面");
      } catch (e) {
            log("[错误] 返回桌面失败:" + e);
      }
    });
    titleBar.addView(homeBtn);
   
    header.addView(titleBar);
   
    return header;
}

/**
* 应用启动页面
* @param {TabView} mainTab - TabView 实例
* @returns {Vertical} 页面视图
*/
function createAppLaunchView(mainTab) {
    var v = new Vertical();
    v.setBackgroundColor(245, 247, 250);
   
    // 标题
    var header = new Horizontal();
    header.setAlignment("center");
    var title = new Label();
    title.setText("&#128640; 应用启动器");
    title.setTextColor(41, 128, 185);
    title.setFontSize(24);
    header.addView(title);
    v.addView(header);
   
    var divider = new Label();
    divider.setHeight(2);
    divider.setBackgroundColor(200, 200, 200);
    v.addView(divider);
   
    // 常用应用按钮
    var appContainer = new Vertical();
    appContainer.setBackgroundColor(255, 255, 255);
   
    var apps = [
      { name: "微信", color: },
      { name: "QQ", color: },
      { name: "支付宝", color: },
      { name: "抖音", color: },
      { name: "快手", color: },
      { name: "微博", color: }
    ];
   
    for (var i = 0; i < apps.length; i++) {
      var appBtn = new Button();
      appBtn.setText("启动 " + apps.name);
      appBtn.setColor(apps.color, apps.color, apps.color);
      appBtn.setTextColor(255, 255, 255);
      appBtn.setHeight(45);
      (function(appName) {
            appBtn.onClick(() => {
                log(" 点击启动:" + appName);
                AppLauncher.launchApp(appName, 3);
            });
      })(apps.name);
      appContainer.addView(appBtn);
    }
   
    v.addView(appContainer);
   
    // 自定义输入
    var inputContainer = new Horizontal();
    inputContainer.setAlignment("center_vertical");
   
    var inputLabel = new Label();
    inputLabel.setText("应用名称:");
    inputLabel.setTextColor(50, 50, 50);
    inputLabel.setWidth(100);
    inputContainer.addView(inputLabel);
   
    var appInput = new Input();
    appInput.setWidth(200);
    inputContainer.addView(appInput);
   
    v.addView(inputContainer);
   
    var customLaunchBtn = new Button();
    customLaunchBtn.setText("启动自定义应用");
    customLaunchBtn.setColor(155, 89, 182);
    customLaunchBtn.setTextColor(255, 255, 255);
    customLaunchBtn.setHeight(45);
    customLaunchBtn.onClick(() => {
      var appName = appInput.getText();
      if (appName) {
            log(" 启动自定义应用:" + appName);
            AppLauncher.launchApp(appName, 3);
            appInput.setText("");
      } else {
            log(" 请输入应用名称");
      }
    });
    v.addView(customLaunchBtn);
   
    // 批量启动
    var batchBtn = new Button();
    batchBtn.setText("批量启动 (微信+QQ+支付宝)");
    batchBtn.setColor(52, 152, 219);
    batchBtn.setTextColor(255, 255, 255);
    batchBtn.setHeight(45);
    batchBtn.onClick(() => {
      AppLauncher.launchMultipleApps(["微信", "QQ", "支付宝"]);
    });
    v.addView(batchBtn);
   
    // 关闭按钮
    var closeBtn = new Button();
    closeBtn.setText("❌ 关闭面板");
    closeBtn.setColor(149, 165, 166);
    closeBtn.setTextColor(255, 255, 255);
    closeBtn.setHeight(40);
    closeBtn.onClick(() => {
      log(" 关闭控制面板");
      if (mainTab) {
            mainTab.dismiss();
      }
    });
    v.addView(closeBtn);
   
    return v;
}

/**
* 快捷操作页面
* @param {TabView} mainTab - TabView 实例
* @returns {Vertical} 页面视图
*/
function createQuickActionsView(mainTab) {
    var v = new Vertical();
    v.setBackgroundColor(245, 247, 250);
   
    // 标题
    var header = new Horizontal();
    header.setAlignment("center");
    var title = new Label();
    title.setText("⚡ 快捷操作");
    title.setTextColor(41, 128, 185);
    title.setFontSize(24);
    header.addView(title);
    v.addView(header);
   
    var divider = new Label();
    divider.setHeight(2);
    divider.setBackgroundColor(200, 200, 200);
    v.addView(divider);
   
    // 快捷按钮组
    var quickContainer = new Vertical();
    quickContainer.setBackgroundColor(255, 255, 255);
   
    // 屏幕中心点击
    var centerClickBtn = new Button();
    centerClickBtn.setText("点击屏幕中心");
    centerClickBtn.setColor(46, 204, 113);
    centerClickBtn.setTextColor(255, 255, 255);
    centerClickBtn.setHeight(45);
    centerClickBtn.onClick(() => {
      log("[快捷] 点击屏幕中心");
      ClickManager.clickPercent(0.5, 0.5);
    });
    quickContainer.addView(centerClickBtn);
   
    // 双击屏幕中心
    var doubleClickBtn = new Button();
    doubleClickBtn.setText("双击屏幕中心");
    doubleClickBtn.setColor(241, 196, 15);
    doubleClickBtn.setTextColor(50, 50, 50);
    doubleClickBtn.setHeight(45);
    doubleClickBtn.onClick(() => {
      log("[快捷] 双击屏幕中心");
      ClickManager.doubleClick(0.5, 0.5);
    });
    quickContainer.addView(doubleClickBtn);
   
    // 显示屏幕文本
    var showTextBtn = new Button();
    showTextBtn.setText("显示屏幕所有文本");
    showTextBtn.setColor(52, 152, 219);
    showTextBtn.setTextColor(255, 255, 255);
    showTextBtn.setHeight(45);
    showTextBtn.onClick(() => {
      AppLauncher.showAllScreenText();
    });
    quickContainer.addView(showTextBtn);
   
    // 刷新 OCR
    var refreshOcrBtn = new Button();
    refreshOcrBtn.setText("刷新 OCR 缓存");
    refreshOcrBtn.setColor(155, 89, 182);
    refreshOcrBtn.setTextColor(255, 255, 255);
    refreshOcrBtn.setHeight(45);
    refreshOcrBtn.onClick(() => {
      log("[快捷] 刷新 OCR 缓存");
      ScreenManager.lockCache();
      sleep(500);
      ScreenManager.unlockCache();
      log("[快捷] 刷新完成");
    });
    quickContainer.addView(refreshOcrBtn);
   
    v.addView(quickContainer);
   
    return v;
}

/**
* 系统设置页面
* @param {TabView} mainTab - TabView 实例
* @returns {Vertical} 页面视图
*/
function createSettingsView(mainTab) {
    var v = new Vertical();
    v.setBackgroundColor(245, 247, 250);
   
    // 标题
    var header = new Horizontal();
    header.setAlignment("center");
    var title = new Label();
    title.setText("⚙️ 系统设置");
    title.setTextColor(41, 128, 185);
    title.setFontSize(24);
    header.addView(title);
    v.addView(header);
   
    var divider = new Label();
    divider.setHeight(2);
    divider.setBackgroundColor(200, 200, 200);
    v.addView(divider);
   
    // 设置容器
    var settingsContainer = new Vertical();
    settingsContainer.setBackgroundColor(255, 255, 255);
   
    // 日志开关
    var logCheck = new CheckBox();
    logCheck.setText("启用日志记录");
    logCheck.setID("日志开关");
    logCheck.setDefultSelect(); // 默认选中
    logCheck.onClick(() => {
      AppConfig.logEnabled = logCheck.isSelect();
      log("[设置] 日志记录:" + (AppConfig.logEnabled ? "已开启" : "已关闭"));
    });
    settingsContainer.addView(logCheck);
   
    // 点击延迟设置
    var delayContainer = new Horizontal();
    delayContainer.setAlignment("center_vertical");
   
    var delayLabel = new Label();
    delayLabel.setText("点击延迟:");
    delayLabel.setTextColor(50, 50, 50);
    delayLabel.setWidth(100);
    delayContainer.addView(delayLabel);
   
    var delayInput = new Input();
    delayInput.setWidth(100);
    delayInput.setText(String(AppConfig.clickDelay));
    delayContainer.addView(delayInput);
   
    var delayUnit = new Label();
    delayUnit.setText(" ms");
    delayUnit.setTextColor(100, 100, 100);
    delayContainer.addView(delayUnit);
   
    settingsContainer.addView(delayContainer);
   
    var saveDelayBtn = new Button();
    saveDelayBtn.setText("保存延迟设置");
    saveDelayBtn.setColor(52, 152, 219);
    saveDelayBtn.setTextColor(255, 255, 255);
    saveDelayBtn.setHeight(40);
    saveDelayBtn.onClick(() => {
      var delayText = delayInput.getText();
      var delay = parseInt(delayText);
      if (delay > 0) {
            AppConfig.clickDelay = delay;
            log("[设置] 点击延迟已保存:" + delay + "ms");
      } else {
            log("[设置] 请输入有效的延迟值");
      }
    });
    settingsContainer.addView(saveDelayBtn);
   
    // 重试次数设置
    var retryContainer = new Horizontal();
    retryContainer.setAlignment("center_vertical");
   
    var retryLabel = new Label();
    retryLabel.setText("重试次数:");
    retryLabel.setTextColor(50, 50, 50);
    retryLabel.setWidth(100);
    retryContainer.addView(retryLabel);
   
    var retryInput = new Input();
    retryInput.setWidth(100);
    retryInput.setText(String(AppConfig.retryTimes));
    retryContainer.addView(retryInput);
   
    settingsContainer.addView(retryContainer);
   
    var saveRetryBtn = new Button();
    saveRetryBtn.setText("保存重试次数");
    saveRetryBtn.setColor(46, 204, 113);
    saveRetryBtn.setTextColor(255, 255, 255);
    saveRetryBtn.setHeight(40);
    saveRetryBtn.onClick(() => {
      var retryText = retryInput.getText();
      var retry = parseInt(retryText);
      if (retry > 0) {
            AppConfig.retryTimes = retry;
            log("[设置] 重试次数已保存:" + retry);
      } else {
            log("[设置] 请输入有效的重试次数");
      }
    });
    settingsContainer.addView(saveRetryBtn);
   
    v.addView(settingsContainer);
   
    // 关于信息
    var aboutDivider = new Label();
    aboutDivider.setHeight(1);
    aboutDivider.setBackgroundColor(180, 180, 180);
    v.addView(aboutDivider);
   
    var aboutLabel = new Label();
    aboutLabel.setText("\n" + AppConfig.appName + " v" + AppConfig.version + "\nQQ 群:711841924\n基于 AIWROK 开发平台");
    aboutLabel.setTextColor(100, 100, 100);
    aboutLabel.setFontSize(14);
    v.addView(aboutLabel);
   
    return v;
}

// ==================== 主程序入口 ====================

/**
* 启动演示模式 - 展示所有功能
*/
function runDemo() {
    log("========================================");
    log("&#127822; 智能屏幕自动化助手 Pro v" + AppConfig.version);
    log("========================================");
    log("[演示] 开始功能演示...");
   
    // 1. 显示屏幕信息
    var screenSize = ScreenManager.getScreenSize();
    log("[演示] 屏幕分辨率:" + screenSize.width + "x" + screenSize.height);
   
    // 2. 截图测试
    log("[演示] 执行截图测试...");
    var testImage = ScreenManager.captureFull();
    if (testImage) {
      log("[演示] ✓ 截图成功");
      testImage.close();
    }
   
    // 3. 快捷操作演示
    log("[演示] 点击屏幕中心...");
    ClickManager.clickPercent(0.5, 0.5);
   
    sleep(1000);
   
    log("[演示] 双击屏幕中心...");
    ClickManager.doubleClick(0.5, 0.5);
   
    separator();
    log("[演示] 功能演示完成!");
    log("[提示] 请打开控制面板进行更多操作");
    separator();
}

/**
* 主函数 - 启动应用
*/
function main() {
    try {
      // 运行演示
      runDemo();
      
      // 启动控制面板
      log("[系统] 正在启动控制面板...");
      createControlPanel();
      
      log("[系统] ✓ 系统启动成功");
      
    } catch (e) {
      log("[致命错误] 系统启动失败:" + e);
    }
}

// ==================== 执行主程序 ====================
main();



页: [1]
查看完整版本: 苹果脚本屏幕类screen例子