您的位置:首页 > 移动开发 > 微信开发

易语言通过百度ocr接口识别图片记录微信转账金额的代码

2018-12-03 09:26 946 查看

封包编码

.版本 2
.程序集 程序集1
.子程序 取内容, 文本型
.参数 封包, 文本型
.局部变量 a, 整数型
.局部变量 b, 整数型
.局部变量 ls, 文本型
.如果真 (寻找文本 (封包, “[]”, , 假) ≠ -1 或 寻找文本 (封包, “head”, , 假) ≠ -1 或 封包 = “”)
输出调试文本 (封包)
返回 (“”)
.如果真结束
a = 寻找文本 (封包, “[”, , 假)
.如果真 (a ≠ -1)
a = a + 2
b = 倒找文本 (封包, “]”, , 假)
.如果真 (b ≠ -1)
b = b - 1
ls = 取文本中间 (封包, a, b - a)
ls = 子文本替换 (ls, #引号 + “,” + #引号, “\u000d\u000a”, , , 真)
.如果真结束
.如果真结束
返回 (asciiConvertNative (ls))
.子程序 asciiConvertNative, 文本型, , 将Ucs2码转换为Ansi码 (返回转换后的文本)
.参数 文本, 文本型, , 欲转换的Ucs2码
.局部变量 p, 文本型
.局部变量 对象, 对象
.局部变量 js, 文本型
js = “function asciiConvertNative(s) {” + #换行符 + “var asciicode = s.split(” + #引号 + “\\u” + #引号 + “);” + #换行符 + “var nativeValue = asciicode[0];” + #换行符 + “for (var i = 1; i < asciicode.length; i++) {” + #换行符 + “var code = asciicode[i];” + #换行符 + “nativeValue += String.fromCharCode(parseInt(” + #引号 + “0x” + #引号 + “ + code.substring(0, 4)));” + #换行符 + “if (code.length > 4) {” + #换行符 + “nativeValue += code.substring(4, code.length);” + #换行符 + “}” + #换行符 + “}” + #换行符 + “return nativeValue;” + #换行符 + “}”
对象.创建 (“ScriptControl”, )
对象.写属性 (“Language”, “JScript”)
对象.通用方法 (“Eval”, js)
p = 对象.通用方法 (“Run”, “asciiConvertNative”, 文本, , , , ).取文本 ()
返回 (p)
.子程序 彗星URL编码, 文本型, , 返回已编码的URL
.参数 Bin_URL, 文本型
.局部变量 局部_数据, 字节集
.局部变量 i, 整数型
.局部变量 ii, 文本型
局部_数据 = 到字节集 (Bin_URL)
.计次循环首 (取字节集长度 (局部_数据), i)
.如果 (到整数 (局部_数据 [i]) ≥ 48 且 到整数 (局部_数据 [i]) ≤ 57 或 到整数 (局部_数据 [i]) ≥ 65 且 到整数 (局部_数据 [i]) ≤ 90 或 到整数 (局部_数据 [i]) ≥ 65 且 到整数 (局部_数据 [i]) ≤ 90 或 到整数 (局部_数据 [i]) ≥ 97 且 到整数 (局部_数据 [i]) ≤ 122)
ii = ii + 字符 (局部_数据 [i])
.否则
ii = ii + “%” + 取十六进制文本 (局部_数据 [i])
.如果结束
.计次循环尾 ()
返回 (ii)
.子程序 Base64编码, 文本型, , BASE64编码处理(返回编码后的文本)
.参数 待编码数据, 字节集, , 待编码字节集
.局部变量 余数
.局部变量 临时, 字节型, , "3"
.局部变量 变量
.局部变量 集合, 字节集
.局部变量 长度, 整数型
.局部变量 字符, 字节集
.局部变量 i
长度 = 取字节集长度 (待编码数据)
.如果真 (长度 < 1)
返回 (“”)
.如果真结束
余数 = 长度 % 3
.如果真 (余数 > 0)
待编码数据 = 待编码数据 + 取空白字节集 (3 - 余数)
.如果真结束
长度 = 取字节集长度 (待编码数据)
字符 = 取空白字节集 (长度 × 4 ÷ 3)
i = 1
集合 = 到字节集 (“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”)
.变量循环首 (1, 长度, 3, 变量)
临时 [1] = 待编码数据 [变量]
临时 [2] = 待编码数据 [变量 + 1]
临时 [3] = 待编码数据 [变量 + 2]
字符 [i] = 集合 [右移 (临时 [1], 2) + 1]
字符 [i + 1] = 集合 [左移 (位与 (临时 [1], 3), 4) + 右移 (临时 [2], 4) + 1]
字符 [i + 2] = 集合 [左移 (位与 (临时 [2], 15), 2) + 右移 (临时 [3], 6) + 1]
字符 [i + 3] = 集合 [位与 (临时 [3], 63) + 1]
i = i + 4
.变量循环尾 ()
.如果真 (余数 > 0)
长度 = 取字节集长度 (字符)
.如果 (余数 = 1)
字符 [长度 - 1] = 取代码 (“=”, )
字符 [长度] = 取代码 (“=”, )
.否则
字符 [长度] = 取代码 (“=”, )
.如果结束
.如果真结束
返回 (到文本 (字符))

微信转账记录金额导出数据的代码

此功能需要加载精易模块5.6

.版本 2
.支持库 shell
.支持库 iext
.程序集 窗口程序集_启动窗口
.程序集变量 微信句柄, 整数型
.程序集变量 阿信, 类_识图
.程序集变量 handwork, 整数型
.程序集变量 总收入, 整数型
.程序集变量 领包回复, 文本型
.程序集变量 自动回复, 文本型
.子程序 __启动窗口_创建完毕
.如果真 (文件是否存在 (取特定目录 (#系统桌面) + “Config.ini”) = 假)
写配置项 (取特定目录 (#系统桌面) + “Config.ini”, “恭喜发财”, “领包回复”, “已确定收款,即将充值”)
写配置项 (取特定目录 (#系统桌面) + “Config.ini”, “恭喜发财”, “自动回复”, “您好,有什么可以帮助您的”)
.如果真结束
' 读取句柄
微信句柄 = 进程_名取句柄 (“WeChat.exe”)
handwork = GetDesktopWindow ()
' 调试输出 (微信句柄)
.如果真 (微信句柄 = -1)
选择框1.选中 = 假
.如果真结束
' 读取配置
领包回复 = 读配置项 (取特定目录 (#系统桌面) + “Config.ini”, “恭喜发财”, “领包回复”, “已确定收款,即将充值”)
自动回复 = 读配置项 (取特定目录 (#系统桌面) + “Config.ini”, “恭喜发财”, “自动回复”, “您好,有什么可以帮助您的”)
.子程序 百度云OCR识别图片, 文本型, , 论坛大佬转载的帖子 忘记谁了...
.参数 图片, 字节集, , png、gif、jpg图片,尺寸不宜过大
.局部变量 XML对象, 对象
.局部变量 源代码, 字节集
.如果真 (XML对象.创建 (“Microsoft.XMLHTTP”, ) = 假)
返回 (“”)
.如果真结束
XML对象.方法 (“open”, “POST”, “http://biji.baidu.com/inotes/api/hackathonocr”, 假, )
XML对象.方法 (“setRequestHeader”, “Content-Type”, “application/x-www-form-urlencoded”)
XML对象.方法 (“send”, “text=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGg&sig=47E%2BgkykZJ8HIncF%2BXugDwalZmI2mtP%2F3jy6nVZNCDUAAAAAAAAAAAAAAAAAAAAA&body=data%3Aimage%2Fpng%3Bbase64%2C” + 彗星URL编码 (Base64编码 (图片)))
处理事件 ()
返回 (取内容 (XML对象.读文本属性 (“responseText”, )))
.子程序 备注识别, , , 备注识别备注识别备注识别
.局部变量 返回位置_备注, 精易_坐标
.局部变量 区域截图_备注, 字节集
.局部变量 返回文本_备注, 文本型
.如果真 (选择框2.选中 = 真)
' 首次激活自动回复
剪辑板_置文本 (自动回复)
键盘_组合按键 (#V键, #Ctrl键, , )
键盘_单击 (#回车键, 1)
处理事件 ()
键盘_单击 (#回车键, 1)
.如果真结束
.如果真 (选择框3.选中 = 真)
播放音乐 (#提示音, )
.如果真结束
' 截图
返回位置_备注 = 阿信.找图_从句柄 (, #备注标识, , )
区域截图_备注 = 图片_屏幕区域截图 (返回位置_备注.横 + 50, 返回位置_备注.纵 - 15, 180, 30)
图片框1.图片 = 区域截图_备注
' Ocr识别
返回文本_备注 = 百度云OCR识别图片 (区域截图_备注)
返回文本_备注 = 子文本替换 (返回文本_备注, “,”, “”, , , 真)
返回文本_备注 = 子文本替换 (返回文本_备注, “!”, “”, , , 真)
返回文本_备注 = 删全部空 (返回文本_备注)
' 调试输出 (返回文本_备注)
编辑框1.内容 = 返回文本_备注
.子程序 _按钮1_被单击
.局部变量 索引, 整数型
.局部变量 int, 整数型
.局部变量 金额, 整数型
.如果真 (编辑框1.内容 ≠ “暂无消息” 且 编辑框2.内容 ≠ “暂无转账”)
' 置剪辑版
.如果 (选择框5.选中 = 真)
剪辑板_置文本 (编辑框1.内容)
.否则
剪辑板_置文本 (编辑框1.内容 + “-” + 编辑框2.内容)
.如果结束
' 加入超级列表框
索引 = 超级列表框1.插入表项 (-1, 编辑框1.内容, , , , )
超级列表框1.置标题 (索引, 1, 编辑框2.内容)
超级列表框1.置标题 (索引, 2, 时间_到文本 (, 3, ))
' 计算总收入
总收入 = 总收入 + 到整数 (编辑框2.内容)
标签4.标题 = “已收转账数:” + 到文本 (超级列表框1.取表项数 ()) + “ | 总金额:” + 到文本 (总收入)
时钟1.时钟周期 = 2000
时钟2.时钟周期 = 6000
.如果真结束
.子程序 转账识别, , , 转账识别转账识别转账识别
.局部变量 区域截图_金额, 字节集
.局部变量 返回文本_金额, 文本型
.局部变量 返回位置_金额, 精易_坐标
.局部变量 确认收钱_位置, 精易_坐标
.局部变量 聊天框_坐标, 精易_坐标
返回位置_金额 = 阿信.找图_从句柄 (, #转账标识, , )
处理事件 ()
程序_延时 (200)
区域截图_金额 = 图片_屏幕区域截图 (返回位置_金额.横 + 46, 返回位置_金额.纵, 150, 30)
' 写到文件 (取特定目录 (#系统桌面) + “1.jpg”, 区域截图)
图片框2.图片 = 区域截图_金额
返回文本_金额 = 百度云OCR识别图片 (区域截图_金额)
程序_延时 (500)
' 点击转账
鼠标_单击 (handwork, 返回位置_金额.横, 返回位置_金额.纵, 1)
' 调试输出 (“返回位置”, 返回位置_金额.纵)
处理事件 ()
程序_延时 (500)
确认收钱_位置 = 阿信.找图_从句柄 (, #确认收钱, , )
处理事件 ()
程序_延时 (1000)
' 调试输出 (“确认收钱”, 确认收钱_位置.横)
.如果 (确认收钱_位置.横 ≠ -1)
' 点击收钱
鼠标_单击 (handwork, 确认收钱_位置.横, 确认收钱_位置.纵, 1)
程序_延时 (500)
处理事件 ()
键盘_单击 (#Esc键, 1)
处理事件 ()
程序_延时 (1000)
.否则
键盘_单击 (#Esc键, 1)
处理事件 ()
程序_延时 (1000)
.如果结束
.如果真 (选择框4.选中 = 真)
' 领包回复
聊天框_坐标 = 阿信.找图_从句柄 (, #聊天框, , )
程序_延时 (500)
' 调试输出 (“聊天框”, 聊天框_坐标.横)
鼠标_单击 (handwork, 聊天框_坐标.横, 聊天框_坐标.纵 + 20, 1)
程序_延时 (500)
剪辑板_置文本 (领包回复)
键盘_组合按键 (#V键, #Ctrl键, , )
程序_延时 (500)
键盘_单击 (#回车键, 1)
处理事件 ()
.如果真结束
.如果真 (取文本左边 (返回文本_金额, 2) = “00”)
返回文本_金额 = “0.0” + 取文本右边 (返回文本_金额, 1)
编辑框2.内容 = 返回文本_金额
返回 ()
.如果真结束
返回文本_金额 = 取文本左边 (返回文本_金额, 取文本长度 (返回文本_金额) - 2)
编辑框2.内容 = 返回文本_金额
.子程序 _时钟2_周期事件
.局部变量 返回位置_金额, 精易_坐标
返回位置_金额 = 阿信.找图_从句柄 (, #转账标识, , )
.如果真 (返回位置_金额.横 = -1 且 返回位置_金额.纵 = -1)
编辑框2.内容 = “暂无转账”
返回 ()
.如果真结束
转账识别 ()
时钟2.时钟周期 = 0
.子程序 _时钟1_周期事件, , , 监控消息识别备注
.局部变量 返回位置_消息, 精易_坐标
返回位置_消息 = 阿信.找图_从句柄 (, #消息标识, , )
' 鼠标_移动 (, 返回位置.横, 返回位置.纵)
' 调试输出 (“消息标识符”, 返回位置_消息.横, 返回位置_消息.纵)
.如果真 (返回位置_消息.横 = -1 且 返回位置_消息.纵 = -1)
返回 ()
.如果真结束
鼠标_单击 (handwork, 返回位置_消息.横, 返回位置_消息.纵, 1)
备注识别 ()
时钟1.时钟周期 = 0
.子程序 _标签3_鼠标左键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.局部变量 错误率, 整数型
信息框 (“本程序调用百度OCR文字智能识别技术” + #换行符 + “如果识别出现错误,建议备注名中加上空格” + #换行符 + “比如:原备注名为 mx666 则改为 m x 6 6 6”, 0 + #信息图标, “提示:面向未来”)
.子程序 _时钟3_周期事件
.局部变量 微信位置, 精易_矩形
.如果真 (微信句柄 = -1)
选择框1.选中 = 假
.如果真结束
.如果真 (选择框1.选中 = 真)
.如果真 (选择框1.选中 = 真)
微信位置 = 窗口_取矩形 (微信句柄)
移动 (微信位置.右边 - 10, 微信位置.顶边 + 24, , )
.如果真结束
.如果真结束
.子程序 _选择框1_鼠标左键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.如果真 (微信句柄 = -1)
选择框1.选中 = 假
信息框 (“检测到您并没有打开微信” + #换行符 + “请先打开微信”, 0, “提示:您好”)
.如果真结束
.子程序 __启动窗口_将被销毁
.局部变量 时间, 文本型
.局部变量 文件号, 整数型
.局部变量 int, 整数型
.局部变量 文本, 文本型
.如果 (信息框 (“您好” + #换行符 + “是否导出列表框金额相关数据?” + #换行符 + “点击是表示生成配置并导出,否则直接结束”, #是否钮 + #询问图标, “提示:是否导出数据”) = #是钮)
时间 = 到文本 (取现行时间 ())
写到文件 (取特定目录 (#系统桌面) + 时间 + “.txt”, 到字节集 (“”))
文件号 = 打开文件 (取特定目录 (#系统桌面) + 时间 + “.txt”, , )
.计次循环首 (超级列表框1.取表项数 (), int)
文本 = 超级列表框1.取标题 (int - 1, 0) + “-” + 超级列表框1.取标题 (int - 1, 1) + “-” + 超级列表框1.取标题 (int - 1, 2)
写文本行 (文件号, 文本)
.计次循环尾 ()
关闭文件 (文件号)
.否则
结束 ()
.如果结束
.子程序 _监控消息_被选择
.局部变量 time, 整数型
.如果真 (监控消息.选中 = 真)
监控消息.选中 = 假
信息框 (“已撤销监控消息”, 0, “提示:成功”)
时钟1.时钟周期 = 0
返回 ()
.如果真结束
.如果真 (监控消息.选中 = 假)
监控消息.选中 = 真
.如果真 (Ms2000.选中 = 真)
time = 2000
时钟1.时钟周期 = time
信息框 (“已开启监控消息,” + “时钟周期为” + 到文本 (time), 0, “提示:成功”)
返回 ()
.如果真结束
.如果真 (Ms3500.选中 = 真)
time = 3500
时钟1.时钟周期 = time
信息框 (“已开启监控消息,” + “时钟周期为” + 到文本 (time), 0, “提示:成功”)
返回 ()
.如果真结束
.如果真 (Ms4900.选中 = 真)
time = 4900
时钟1.时钟周期 = time
信息框 (“已开启监控消息,” + “时钟周期为” + 到文本 (time), 0, “提示:成功”)
返回 ()
.如果真结束
.如果真结束
.子程序 _Ms3500_被选择
Ms3500.选中 = 真
Ms2000.选中 = 假
Ms4900.选中 = 假
时钟1.时钟周期 = 3500
.子程序 _监控转账_被选择
.局部变量 TIME, 整数型
.如果真 (监控转账.选中 = 真)
监控转账.选中 = 假
信息框 (“已撤销监控转账”, 0, “提示:成功”)
时钟2.时钟周期 = 0
返回 ()
.如果真结束
.如果真 (监控转账.选中 = 假)
监控转账.选中 = 真
.如果真 (Ms5000.选中 = 真)
TIME = 5000
时钟2.时钟周期 = TIME
信息框 (“已开启监控转账,” + “时钟周期为” + 到文本 (TIME), 0, “提示:成功”)
返回 ()
.如果真结束
.如果真 (Ms6000.选中 = 真)
TIME = 6000
时钟2.时钟周期 = TIME
信息框 (“已开启监控转账,” + “时钟周期为” + 到文本 (TIME), 0, “提示:成功”)
返回 ()
.如果真结束
.如果真 (Ms7000.选中 = 真)
TIME = 7000
时钟2.时钟周期 = TIME
信息框 (“已开启监控转账,” + “时钟周期为” + 到文本 (TIME), 0, “提示:成功”)
返回 ()
.如果真结束
.如果真结束
.子程序 _Ms2000_被选择
Ms2000.选中 = 真
Ms3500.选中 = 假
Ms4900.选中 = 假
时钟1.时钟周期 = 2000
.子程序 _Ms4900_被选择
Ms4900.选中 = 真
Ms2000.选中 = 假
Ms3500.选中 = 假
时钟1.时钟周期 = 4900
.子程序 _Ms5000_被选择
Ms5000.选中 = 真
Ms6000.选中 = 假
Ms7000.选中 = 假
时钟2.时钟周期 = 5000
.子程序 _Ms6000_被选择
Ms5000.选中 = 假
Ms6000.选中 = 真
Ms7000.选中 = 假
时钟2.时钟周期 = 6000
.子程序 _Ms7000_被选择
Ms5000.选中 = 假
Ms6000.选中 = 假
Ms7000.选中 = 真
时钟2.时钟周期 = 7000
.子程序 _Ms200_被选择
Ms200.选中 = 真
Ms500.选中 = 假
Ms1000.选中 = 假
时钟3.时钟周期 = 200
.子程序 _Ms500_被选择
Ms200.选中 = 假
Ms500.选中 = 真
Ms1000.选中 = 假
时钟3.时钟周期 = 500
.子程序 _Ms1000_被选择
Ms200.选中 = 假
Ms500.选中 = 假
Ms1000.选中 = 真
时钟3.时钟周期 = 1000

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐