YYPOST群发软件 发表于 2025-9-4 08:05:08

AWIROK软件苹果系统屏幕类[screen]方法小结

AWIROK软件苹果系统屏幕类方法小结

/*
🍎交流 QQ 群 711841924 群一,苹果内测群,528816639
🍎屏幕相关方法小结
*/
//🍎屏幕类 方法小结

// 第一个方法:📌lockScreen 锁定屏幕缓存
/*
类别      详情说明
方法功能   锁定屏幕缓存,执行 screenShot 时将会始终返回缓存
方法签名   Void lockScreen()
返回值   Void(无返回值)
参数       无
*/
// 示例:锁定屏幕缓存
screen.lockScreen();


// 第二个方法:📌unLockScreen 解锁锁屏幕缓存
/*
类别      详情说明
方法功能   解锁锁屏幕缓存
方法签名   Void unLockScreen()
返回值   Void(无返回值)
参数       无
*/
// 示例:解锁锁屏幕缓存
screen.unLockScreen();


// 第三个方法:📌isOpenShortcut 是否开启快照截屏
/*
类别      详情说明
方法功能   判断是否开启快照截屏
方法签名   Boolean isOpenShortcut()
返回值   Boolean(开启返回 true,否则返回 false)
参数       无
*/
// 示例:判断是否开启快照截屏
screen.isOpenShortcut();


// 第四个方法:📌getScreenWidth 获取屏幕宽度
/*
类别      详情说明
方法功能   获取屏幕宽度
方法签名   Int32 getScreenWidth()
返回值   Int32(屏幕宽度值)
参数       无
*/
// 示例:获取屏幕宽度
screen.getScreenWidth();


// 第五个方法:📌getScreenHeight 获取屏幕高度
/*
类别      详情说明
方法功能   获取屏幕高度
方法签名   Int32 getScreenHeight()
返回值   Int32(屏幕高度值)
参数       无
*/
// 示例:获取屏幕高度
screen.getScreenHeight();


// 第六个方法:📌ocr 识别支持设定区域
/*
类别      详情说明
方法功能   OCR 识别指定区域内的内容
方法签名   OcrResult ocr(Single left, Single top, Single right, Single bottom)
返回值   OcrResult(OCR 识别结果)
参数       - Single left:区域左边界
- Single top:区域上边界
- Single right:区域右边界
- Single bottom:区域下边界
*/
// 示例:识别指定区域(左 0、上 0、右 1、下 1 范围)的内容
screen.ocr(0, 0, 1, 1);


// 第七个方法:📌screenShot 截图缩放(需调用 close 释放图像)
/*
类别      详情说明
方法功能   对屏幕进行缩放截图,使用后需调用 close 释放图像
方法签名   Image screenShot(Int32 width, Int32 heigth, Int32 compress)
返回值   Image(截图的图像对象)
参数       - Int32 width:截图目标宽度
- Int32 heigth:截图目标高度
- Int32 compress:压缩率(范围 0 - 100)
*/
// 示例:缩放截图(宽度、高度、压缩率为示例值)
screen.screenShot(Int32, Int32, Int32);


// 第八个方法:📌screenShotFull 全尺寸截图(需调用 close 释放图像)
/*
类别      详情说明
方法功能   对屏幕进行全尺寸截图,使用后需调用 close 释放图像
方法签名   Image screenShotFull()
返回值   Image(全尺寸截图的图像对象)
参数       无
*/
// 示例:全尺寸截图
screen.screenShotFull();方法 1:lockScreen(锁定屏幕缓存)
项目详情
功能说明锁定屏幕缓存
方法名lockScreen()
返回值Void
参数无
案例screen.lockScreen()
方法 2:unLockScreen(解锁锁屏幕缓存)
项目详情
功能说明解锁锁屏幕缓存
方法名unLockScreen()
返回值Void
参数无
案例screen.unLockScreen()
方法 3:isOpenShortcut(是否开启快照截屏)
项目详情
功能说明是否开启快照截屏
方法名isOpenShortcut()
返回值Boolean
参数无
案例screen.isOpenShortcut()
方法 4:getScreenWidth(获取屏幕宽度)
项目详情
功能说明获取屏幕宽度
方法名getScreenWidth()
返回值Int32
参数无
案例screen.getScreenWidth()
方法 5:getScreenHeight(获取屏幕高度)
项目详情
功能说明获取屏幕高度
方法名getScreenHeight()
返回值Int32
参数无
案例screen.getScreenHeight()
方法 6:ocr(识别支持设定区域)
项目详情
功能说明识别支持设定区域
方法名ocr(Single left, Single top, Single right, Single bottom)
返回值OcrResult
参数Single left: 左
Single top: 上
Single right: 右
Single bottom: 下
案例screen.ocr(0,0,1,1)
方法 7:screenShot(截图缩放,记得调用 close 释放图像)
项目详情
功能说明截图缩放,记得调用close释放图像
方法名screenShot(Int32 width, Int32 heigth, Int32 compress)
返回值Image
参数Int32 width: 宽
Int32 heigth: 高
Int32 compress: 压缩率(0 - 100)
案例screen.screenShot(Int32,Int32,Int32)
方法 8:screenShotFull(全尺寸截图,记得调用 close 释放图像)
项目详情
功能说明全尺寸截图,记得调用close释放图像
方法名screenShotFull()
返回值Image
参数无
案例screen.screenShotFull()
实战实例子:/*
🍎交流QQ群711841924群一,苹果内测群,528816639
🍎🔨屏幕截图和OCR识别示例方法小结
*/
// 完整的屏幕截图和OCR识别示例

/**
* 1. 基础截图功能
*/
function basicScreenshot() {
    try {
      // 获取屏幕尺寸
      var screenWidth = screen.getScreenWidth();
      var screenHeight = screen.getScreenHeight();
      
      printl("屏幕分辨率: " + screenWidth + "x" + screenHeight);
      
      // 全屏截图
      var fullImage = screen.screenShotFull();
      printl("全屏截图完成");
      
      // 执行OCR识别
      var ocrResult = fullImage.ocr(0, 0, 1, 1); // 全屏范围OCR
      var allText = ocrResult.getAllString();
      printl("OCR识别结果: " + allText.substring(0, 200) + "..."); // 显示前200个字符
      
      // 查找特定文本
      var targetText = "设置";
      var foundDetect = ocrResult.findIncludeText(targetText, );
      
      if (foundDetect != null) {
            printl("找到文本: " + targetText);
            
            // 获取文本位置
            var rect = foundDetect.getRect();
            var centerX = rect.getCenterX();
            var centerY = rect.getCenterY();
            printl("文本中心位置: (" + centerX + ", " + centerY + ")");
            
            // 点击该文本
            foundDetect.clickRandom();
            printl("已点击文本区域");
      } else {
            printl("未找到文本: " + targetText);
      }
      
      // 释放图像资源
      fullImage.close();
      printl("图像资源已释放");
      
    } catch (e) {
      printl("截图操作出错: " + e);
    }
}

/**
* 2. 缩放截图功能
*/
function scaledScreenshot() {
    try {
      var screenWidth = screen.getScreenWidth();
      var screenHeight = screen.getScreenHeight();
      
      // 截取屏幕一半大小的图像,压缩率为80%
      var scaledImage = screen.screenShot(
            Math.floor(screenWidth/2),
            Math.floor(screenHeight/2),
            80
      );
      
      printl("缩放截图完成");
      
      // 执行OCR识别
      var ocrResult = scaledImage.ocr(0, 0, 1, 1);
      var allText = ocrResult.getAllString();
      printl("缩放截图OCR结果: " + allText.substring(0, 200) + "..."); // 显示前200个字符
      
      // 释放图像资源
      scaledImage.close();
      printl("图像资源已释放");
      
    } catch (e) {
      printl("缩放截图操作出错: " + e);
    }
}

/**
* 3. 多种截图方式综合示例
*/
function comprehensiveScreenshot() {
    try {
      printl("=== 开始综合截图测试 ===");
      
      // 获取屏幕信息
      var screenWidth = screen.getScreenWidth();
      var screenHeight = screen.getScreenHeight();
      printl("屏幕分辨率: " + screenWidth + "x" + screenHeight);
      
      // 检查快照截屏状态
      var isSnapshot = screen.isOpenShortcut();
      printl("快照截屏状态: " + (isSnapshot ? "已开启" : "未开启"));
      
      // 锁定屏幕缓存以确保一致性
      screen.lockScreen();
      printl("屏幕缓存已锁定");
      
      // 1. 全尺寸截图
      printl("执行全尺寸截图...");
      var fullImg = screen.screenShotFull();
      printl("全尺寸截图完成");
      
      // 对截图进行OCR识别
      var ocrResult = fullImg.ocr(0, 0, 1, 1);
      var allText = ocrResult.getAllString();
      printl("OCR识别完成,文本长度: " + allText.length);
      
      // 查找特定文本
      var targetText = "设置";
      var foundText = ocrResult.findIncludeText(targetText, );
      if (foundText != null) {
            printl("找到文本: " + targetText);
            
            // 获取文本位置信息
            var rect = foundText.getRect();
            var centerX = rect.getCenterX();
            var centerY = rect.getCenterY();
            printl("文本中心位置: (" + centerX + ", " + centerY + ")");
            
            // 点击该文本
            foundText.clickRandom();
            printl("已点击文本区域");
      } else {
            printl("未找到文本: " + targetText);
      }
      
      // 2. 缩放截图
      printl("执行缩放截图...");
      var scaledImg = screen.screenShot(
            Math.floor(screenWidth/2),
            Math.floor(screenHeight/2),
            80
      );
      printl("缩放截图完成");
      
      // 对缩放截图进行OCR识别
      var scaledOcrResult = scaledImg.ocr(0, 0, 1, 1);
      var scaledAllText = scaledOcrResult.getAllString();
      printl("缩放截图OCR结果: " + scaledAllText.substring(0, 200) + "..."); // 显示前200个字符
      
      // 释放所有图像资源
      fullImg.close();
      scaledImg.close();
      printl("所有图像资源已释放");
      
      // 解锁屏幕缓存
      screen.unLockScreen();
      printl("屏幕缓存已解锁");
      
      printl("=== 综合截图测试结束 ===");
      
    } catch (e) {
      printl("综合截图流程出错: " + e);
      // 确保即使出错也能解锁屏幕
      try {
            screen.unLockScreen();
      } catch (unlockError) {
            printl("解锁屏幕时出错: " + unlockError);
      }
    }
}

/**
* 4. 实际应用示例:自动识别并点击按钮
*/
function autoClickButton() {
    try {
      printl("开始自动识别并点击按钮...");
      
      // 全屏截图
      var image = screen.screenShotFull();
      printl("截图完成");
      
      // 执行OCR识别
      var ocrResult = image.ocr(0, 0, 1, 1);
      
      // 查找包含"确定"或"确认"的按钮
      var buttons = [
            "确定",
            "确认",
            "OK",
            "好"
      ];
      
      for (var i = 0; i < buttons.length; i++) {
            var button = buttons;
            var detect = ocrResult.findIncludeText(button, );
            
            if (detect != null) {
                printl("找到按钮: " + button);
               
                // 获取按钮位置
                var rect = detect.getRect();
                var centerX = rect.getCenterX();
                var centerY = rect.getCenterY();
                printl("按钮位置: (" + centerX + ", " + centerY + ")");
               
                // 点击按钮
                detect.clickRandom();
                printl("已点击按钮: " + button);
               
                // 释放资源并返回
                image.close();
                return;
            }
      }
      
      // 如果没有找到目标按钮
      printl("未找到指定按钮");
      
      // 释放资源
      image.close();
      
    } catch (e) {
      printl("自动点击按钮出错: " + e);
    }
}

// 运行示例
printl("=== 开始运行截图示例 ===");

// 基础截图
basicScreenshot();

// 缩放截图
scaledScreenshot();

// 综合截图
comprehensiveScreenshot();

// 自动点击按钮
autoClickButton();

printl("=== 所有示例运行完成 ===");单独 OCR 并点击的例子:
// 完整的点击“日志”按钮的示例
function clickLogButton() {
    try {
      // 1. 获取屏幕尺寸
      var screenWidth = screen.getScreenWidth();
      var screenHeight = screen.getScreenHeight();
      
      printl("屏幕分辨率:" + screenWidth + "x" + screenHeight);
      
      // 2. 全屏截图
      var fullImage = screen.screenShotFull();
      printl("全屏截图完成");
      
      // 3. 执行OCR识别(全屏范围)
      var ocrResult = fullImage.ocr(0, 0, 1, 1);
      var allText = ocrResult.getAllString();
      printl("OCR识别结果:" + allText.substring(0, 200) + "...");

      // 4. 查找包含“日志”的文本
      var targetText = "日志";
      var foundDetect = ocrResult.findIncludeText(targetText, );

      if (foundDetect != null) {
            printl("找到文本:" + targetText);

            // 5. 获取文本位置
            var rect = foundDetect.getRect();
            var centerX = rect.getCenterX();
            var centerY = rect.getCenterY();
            
            printl("文本中心位置:(" + centerX + ", " + centerY + ")");
            
            // 6. 点击该位置
            hid.click(centerX, centerY);
            printl("已点击‘日志’按钮");
      } else {
            printl("未找到‘日志’文本");
            
            // 备用方案:使用百分比坐标点击底部中间位置
            // 假设“日志”在底部导航栏中间,大约在屏幕宽度的50%,高度的90%左右
            hid.clickPercent(0.5, 0.9);
            printl("使用备用方案点击底部中间位置");
      }
      
      // 7. 释放图像资源
      fullImage.close();
      
    } catch (error) {
      printl("执行过程中出现错误:" + error.message);
    }
}

// 调用函数
clickLogButton();



页: [1]
查看完整版本: AWIROK软件苹果系统屏幕类[screen]方法小结