 | |  |  | AWIROK软件苹果系统屏幕类[screen]方法小结
- /*
- 🍎交流 QQ 群 711841924 群一,苹果内测群,528816639
- 🍎屏幕相关方法小结
- */
- //🍎屏幕类 [screen] 方法小结
- // 第一个方法:📌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, [0, 0, 1, 1]);
-
- 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, [0, 0, 1, 1]);
- 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[i];
- var detect = ocrResult.findIncludeText(button, [0, 0, 1, 1]);
-
- 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, [0, 0, 1, 1]);
- 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();
复制代码
| |  | |  |
|