|
下面是一个完整的易语言解决方案,使用精易模块实现后台截图,并结合大漠插件进行OCR文字识别。代码包含详细注释,实现每秒截图并显示到编辑框的功能:
.版本 2
.程序集 窗口程序集1
.程序集变量 dm, 对象
.程序集变量 窗口句柄, 整数型
.程序集变量 时钟句柄, 整数型
.程序集变量 客户区偏移_X, 整数型
.程序集变量 客户区偏移_Y, 整数型
.子程序 __启动窗口_创建完毕
' 请先注册大漠插件到系统 (dm.dll)
是否成功 = dm.创建 ("dm.dmsoft", )
.如果真 (是否成功 = 假)
信息框 ("大漠插件创建失败,请确保dm.dll已注册!", 0, "错误", )
结束 ()
.如果真结束
' 设置字库和识别参数(根据实际情况调整)
dm.SetPath (取运行目录 ()) ' 设置字库路径
dm.SetDict (0, "字库.txt") ' 使用0号字库
' 查找浏览器窗口句柄(根据你的窗口标题修改)
窗口句柄 = 窗口_取句柄 (, , "Chrome_WidgetWin_1", "百du一下,你就知道 - Google Chrome")
.如果真 (窗口句柄 = 0)
信息框 ("未找到浏览器窗口!", 0, "错误", )
结束 ()
.如果真结束
' 获取客户区偏移(只需执行一次)
获取客户区偏移 (窗口句柄, 客户区偏移_X, 客户区偏移_Y)
' 创建时钟每秒执行一次
时钟句柄 = 时钟_创建 (1000, &截图识别)
.子程序 获取客户区偏移
.参数 窗口句柄, 整数型
.参数 偏移X, 整数型, 参考
.参数 偏移Y, 整数型, 参考
.局部变量 窗口矩形, 精易_矩形
.局部变量 客户区坐标, 精易_坐标
' 获取窗口位置
窗口_取位置和大小 (窗口句柄, 窗口矩形)
' 转换客户区坐标
ClientToScreen (窗口句柄, 0, 0, 客户区坐标)
' 计算偏移量
偏移X = 客户区坐标.X - 窗口矩形.左边
偏移Y = 客户区坐标.Y - 窗口矩形.顶边
.子程序 截图识别
.局部变量 全图, 字节集
.局部变量 区域图, 字节集
.局部变量 客户区宽度, 整数型
.局部变量 客户区高度, 整数型
.局部变量 截取区域, 精易_矩形
.局部变量 识别结果, 文本型
' 获取客户区大小
GetClientRect (窗口句柄, 客户区宽度, 客户区高度)
' === 截图设置 ===
' 区域位置:右上角 (根据你的实际位置调整)
截取区域.左边 = 客户区宽度 - 150 ' 从右边向左150像素
截取区域.顶边 = 10 ' 从顶部向下10像素
截取区域.右边 = 150 ' 区域宽度
截取区域.底边 = 30 ' 区域高度
' 后台截图(即使最小化也能截图)
全图 = 窗口_截图 (窗口句柄, , , , 真)
' 裁剪指定区域
区域图 = 图片_裁剪 (全图, 客户区偏移_X + 截取区域.左边, 客户区偏移_Y + 截取区域.顶边, 截取区域.右边, 截取区域.底边)
' 保存临时图片(用于OCR识别)
写到文件 ("temp.bmp", 区域图)
' 使用大漠插件识别文字
识别结果 = dm.Ocr ("temp.bmp", "000000-000000", 0.9)
' 显示到编辑框
编辑框1.内容 = 识别结果
' 调试用:显示截图
' 图片框1.图片 = 区域图
.子程序 __启动窗口_将被销毁
时钟_销毁 (时钟句柄) ' 清除时钟
' ===== 精易模块命令声明 =====
.子程序 窗口_取句柄, 整数型, 公开, 查找窗口句柄
.参数 父句柄, 整数型, 可空
.参数 子句柄, 整数型, 可空
.参数 类名, 文本型, 可空
.参数 标题, 文本型, 可空
.子程序 窗口_截图, 字节集, 公开, 后台截图
.参数 窗口句柄, 整数型
.参数 左边, 整数型, 可空
.参数 顶边, 整数型, 可空
.参数 宽度, 整数型, 可空
.参数 后台, 逻辑型, 可空
.子程序 窗口_取位置和大小, , 公开
.参数 窗口句柄, 整数型
.参数 左边, 整数型, 参考 可空
.参数 顶边, 整数型, 参考 可空
.参数 宽度, 整数型, 参考 可空
.参数 高度, 整数型, 参考 可空
.子程序 图片_裁剪, 字节集, 公开
.参数 图片, 字节集
.参数 左边, 整数型
.参数 顶边, 整数型
.参数 宽度, 整数型
.参数 高度, 整数型
.子程序 ClientToScreen, 逻辑型, 公开
.参数 窗口句柄, 整数型
.参数 客户X, 整数型
.参数 客户Y, 整数型
.参数 屏幕坐标, 精易_坐标, 参考
.子程序 GetClientRect, 逻辑型, 公开
.参数 窗口句柄, 整数型
.参数 宽度, 整数型, 参考
.参数 高度, 整数型, 参考
使用说明:
-
准备工作:
- 下载安装精易模块
- 注册大漠插件(dm.dll)到系统(使用管理员运行命令:
regsvr32 dm.dll )
-
参数调整:
-
字库制作:
- 使用大漠综合工具制作字库
- 将字库文件命名为
字库.txt 放在程序目录
- 或删除
dm.SetDict 行使用默认识别
-
运行效果:
- 程序每秒自动截图指定区域
- 识别文字显示在编辑框1中
- 可取消注释
图片框1 行显示实时截图
常见问题解决:
-
识别不准:
- 使用大漠综合工具制作专用字库
- 调整识别参数:
dm.Ocr("temp.bmp", "000000-000000", 0.9)
- 增加偏色范围(如
"000000-202020" )
-
截图失败:
- 确保窗口标题正确
- 尝试不同的截图方式:
全图 = 窗口_截图 (窗口句柄, 0, 0, 0, 真) ' 后台截图
' 或
全图 = 窗口_截图 (窗口句柄, 0, 0, 0, 假) ' 前台截图
-
性能优化:
- 增加延时:
时钟_创建(2000, &截图识别)
- 缩小截图区域尺寸
- 使用内存识别代替保存文件
注意:首次使用需关闭杀毒软件,某些安全软件会阻止后台截图操作。此方案支持主流浏览器(Chrome/Edge/Firefox)最小化状态截图。
|
|