易语言仿按键精灵录制键盘鼠标操作的代码
DLL命令表
.版本 2 .DLL命令 取按键状态, 短整数型, "user32.dll", "GetAsyncKeyState" .参数 鼠标键, 整数型 .DLL命令 取鼠标位置, 整数型, "user32.dll", "GetCursorPos" .参数 当前鼠标位置, 鼠标位置, 传址 .DLL命令 模拟鼠标按键, , , "mouse_event" .参数 鼠标动作, 整数型 .参数 水平位置, 整数型 .参数 垂直位置, 整数型 .参数 鼠标按键, 整数型 .参数 扩展信息, 整数型 .DLL命令 模拟键盘按键, , , "keybd_event" .参数 bVk, 字节型 .参数 bScan, 字节型 .参数 dwFlags, 整数型 .参数 dwExtraInfo, 整数型
自定义数据类型
.版本 2 .数据类型 鼠标位置 .成员 横向坐标, 整数型 .成员 纵向坐标, 整数型 .数据类型 按键记录, , 记录长度13个字节. .成员 时间间隔, 整数型 .成员 键值, 字节型, , , 0,鼠标移动;其他为键盘键值 .成员 键盘动作, 整数型, , , 或者是 鼠标水平位置 .成员 垂直位置, 整数型, , , 鼠标垂直位置
鼠标键盘录制的代码
.版本 2 .程序集 程序集_主窗口 .程序集变量 按键状态, 整数型, , "256" .程序集变量 时间线, 整数型 .程序集变量 鼠标前次位置, 鼠标位置 .程序集变量 操作记录, 按键记录, , "92000" .程序集变量 缓冲区记录数, 文本型 .程序集变量 当前记录, 整数型 .程序集变量 可否中断, 逻辑型 .程序集变量 屏幕宽度, 整数型 .程序集变量 屏幕高度, 整数型 .程序集变量 停止回放, 逻辑型 .子程序 判断按键 .参数 键值, 字节型 .参数 当前状态, 整数型 .判断开始 (当前状态 = 0) .如果真 (按键状态 [键值 + 1] ≠ 0) 添加记录 (键值, #键抬起, 0) .如果真结束 .判断 (当前状态 ≠ 0) .如果 (键值 = #F3键) 可否中断 = 真 返回 () .否则 .如果结束 .如果真 (按键状态 [键值 + 1] = 0) 添加记录 (键值, #键按下, 0) .如果真结束 .默认 .判断结束 按键状态 [键值 + 1] = 当前状态 .子程序 添加记录 .参数 键值, 字节型, , 为0表示鼠标移动,其他表示按键 .参数 键盘动作, 整数型, , 或 “水平位置”,传入的双精度数 .参数 垂直位置, 整数型 当前记录 = 当前记录 + 1 .如果 (当前记录 > 取数组成员数 (操作记录)) 可否中断 = 真 信息框 (“缓冲区已满,录制被迫中止。”, #错误图标, “录制出错”) 返回 () .否则 .如果结束 操作记录 [当前记录].时间间隔 = 取启动时间 () - 时间线 操作记录 [当前记录].键值 = 键值 操作记录 [当前记录].键盘动作 = 键盘动作 操作记录 [当前记录].垂直位置 = 垂直位置 标签_录制进程.标题 = 到文本 (当前记录) + “ / ” + 缓冲区记录数 .子程序 _按钮_记录_被单击 .局部变量 键值, 整数型 .局部变量 鼠标当前位置, 鼠标位置 .局部变量 鼠标动作, 整数型 .局部变量 脚本文件号, 整数型 .局部变量 记录数, 整数型 .局部变量 脚本文件名, 文本型 按钮_记录.禁止 = 真 按钮_回放.禁止 = 真 按钮_停止.禁止 = 假 .如果真 (选择框_最小化.选中) 位置 = 2 .如果真结束 时钟_热键.时钟周期 = 0 ' 关闭 “记录” 热键 .计次循环首 (256, 键值) ' 初始化按键状态 取按键状态 (键值 - 1) 按键状态 [键值] = 0 .计次循环尾 () 屏幕宽度 = 取屏幕宽度 () ' 为获取鼠标坐标作准备 屏幕高度 = 取屏幕高度 () 当前记录 = 0 时间线 = 取启动时间 () 可否中断 = 假 ' 开始记录 .判断循环首 (可否中断 = 假) 取鼠标位置 (鼠标当前位置) .如果真 (鼠标前次位置.横向坐标 ≠ 鼠标当前位置.横向坐标 或 鼠标前次位置.纵向坐标 ≠ 鼠标当前位置.纵向坐标) 鼠标前次位置 = 鼠标当前位置 添加记录 (0, 鼠标当前位置.横向坐标 × 65535 \ 屏幕宽度, 鼠标当前位置.纵向坐标 × 65535 \ 屏幕高度) .如果真结束 .变量循环首 (146, 255, 1, 键值) ' 先检查额外按键信息。OEM扫描码 处理,扩展键 信息 判断按键 (键值, 取按键状态 (键值)) .变量循环尾 () .变量循环首 (0, 145, 1, 键值) 判断按键 (键值, 取按键状态 (键值)) .变量循环尾 () 处理事件 () 延时 (10) ' 取启动时间() 最少间隔是 15ms .判断循环尾 () .判断开始 (当前记录 > 4) 脚本文件名 = 到文本 (取现行时间 ()) 创建目录 (取运行目录 () + “\scripts”) 脚本文件号 = 打开文件 (取运行目录 () + “\scripts\” + 脚本文件名 + “.mrc”, #重写, #禁止写) .变量循环首 (4, 当前记录, 1, 记录数) 写出数据 (脚本文件号, 操作记录 [记录数].时间间隔, 操作记录 [记录数].键值, 操作记录 [记录数].键盘动作, 操作记录 [记录数].垂直位置) .变量循环尾 () 关闭文件 (脚本文件号) .默认 .判断结束 现存脚本 () 时钟_热键.时钟周期 = 100 ' 打开 “记录”热键 按钮_记录.禁止 = 假 按钮_停止.禁止 = 真 位置 = 0 .子程序 _按钮_停止_被单击 可否中断 = 真 .子程序 现存脚本 .局部变量 脚本文件名, 文本型 按钮_回放.禁止 = 真 按钮_删除.禁止 = 真 列表框_脚本.清空 () 脚本文件名 = 寻找文件 (取运行目录 () + “\scripts\*.mrc”, ) .判断循环首 (脚本文件名 ≠ “”) 列表框_脚本.加入项目 (脚本文件名, ) 脚本文件名 = 寻找文件 (, ) .判断循环尾 () 列表框_脚本.现行选中项 = 列表框_脚本.取项目数 () - 1 _列表框_脚本_列表项被选择 () .子程序 读取脚本 .参数 脚本文件名, 文本型 .局部变量 脚本文件号, 整数型 脚本文件号 = 打开文件 (脚本文件名, #读入, #禁止写) 当前记录 = 0 .判断循环首 (是否在文件尾 (脚本文件号, ) = 假) 当前记录 = 当前记录 + 1 读入数据 (脚本文件号, 操作记录 [当前记录].时间间隔, 操作记录 [当前记录].键值, 操作记录 [当前记录].键盘动作, 操作记录 [当前记录].垂直位置) .判断循环尾 () 关闭文件 (脚本文件号) 按钮_回放.禁止 = 假 .子程序 脚本_回放 .参数 脚本文件名, 文本型 .局部变量 记录数, 整数型 .局部变量 执行次数, 整数型 .局部变量 回放间隔时间, 整数型 读取脚本 (脚本文件名) .如果真 (选择框_回放.选中 = 真) 位置 = 2 .如果真结束 按钮_回放.禁止 = 真 按钮_记录.禁止 = 真 停止回放 = 假 回放间隔时间 = 到数值 (编辑框_间隔时间.内容) .计次循环首 (到数值 (编辑框_回放次数.内容), 执行次数) 标签_当前次数.标题 = 到文本 (执行次数) + “ / ” + 编辑框_回放次数.内容 时间线 = 取启动时间 () .计次循环首 (当前记录, 记录数) .判断循环首 (取启动时间 () ≥ 时间线 且 取启动时间 () - 时间线 ≤ 操作记录 [记录数].时间间隔) ' 解决 取启动时间() 往复的问题 处理事件 () 延时 (3) ' 1/3 .判断循环尾 () .判断开始 (操作记录 [记录数].键值 = 0) ' 鼠标移动 模拟鼠标按键 (位或 (#鼠标移动, #绝对坐标), 操作记录 [记录数].键盘动作, 操作记录 [记录数].垂直位置, 0, 0) .判断 (操作记录 [记录数].键值 = 1) ' 鼠标左键 .如果 (操作记录 [记录数].键盘动作 = #键按下) 模拟鼠标按键 (#左键按下, 0, 0, 0, 0) .否则 模拟鼠标按键 (#左键抬起, 0, 0, 0, 0) .如果结束 .判断 (操作记录 [记录数].键值 = 2) ' 鼠标右键 .如果 (操作记录 [记录数].键盘动作 = #键按下) 模拟鼠标按键 (#右键按下, 0, 0, 0, 0) .否则 模拟鼠标按键 (#右键抬起, 0, 0, 0, 0) .如果结束 .判断 (操作记录 [记录数].键值 = 4) ' 鼠标中键 .如果 (操作记录 [记录数].键盘动作 = #键按下) 模拟鼠标按键 (#中键按下, 0, 0, 0, 0) .否则 模拟鼠标按键 (#中键抬起, 0, 0, 0, 0) .如果结束 .判断 (操作记录 [记录数].键值 > 4) ' 键盘键 模拟键盘按键 (操作记录 [记录数].键值, 0, 操作记录 [记录数].键盘动作, 0) .默认 .判断结束 标签_录制进程.标题 = 到文本 (记录数) + “ / ” + 缓冲区记录数 处理事件 () .如果真 (停止回放) 跳出循环 () .如果真结束 .计次循环尾 () .如果真 (停止回放) 跳出循环 () .如果真结束 .判断开始 (到数值 (编辑框_回放次数.内容) > 1) 延时 (回放间隔时间 × 1000) .默认 .判断结束 .计次循环尾 () 标签_当前次数.标题 = “执行完毕” 按钮_回放.禁止 = 假 按钮_记录.禁止 = 假 位置 = 0 .子程序 __启动窗口_创建完毕 .局部变量 键值, 整数型 .局部变量 命令行, 文本型, , "0" .局部变量 脚本文本, 文本型 缓冲区记录数 = 到文本 (取数组成员数 (操作记录)) 取按键状态 (#F2键) 取按键状态 (#F3键) 取按键状态 (#F4键) 时钟_热键.时钟周期 = 100 现存脚本 () 取命令行 (命令行) .判断开始 (取数组成员数 (命令行) = 1) 脚本文本 = 取运行目录 () + “\scripts\” + 命令行 [1] + “.mrc” .判断开始 (文件是否存在 (脚本文本)) 脚本_回放 (脚本文本) 结束 () .默认 .判断结束 .默认 .判断结束 .子程序 加密机器码, 文本型 .参数 机器码, 文本型 .局部变量 字符位置, 整数型 .局部变量 加密后文本, 文本型 .局部变量 二次加密文本, 文本型 .变量循环首 (取文本长度 (机器码), 1, -1, 字符位置) 加密后文本 = 加密后文本 + 字符 (到数值 (取文本中间 (机器码, 字符位置, 1)) + 取代码 (“p”, )) .变量循环尾 () .计次循环首 (取文本长度 (机器码), 字符位置) 二次加密文本 = 二次加密文本 + 字符 (取代码 (加密后文本, 字符位置) - 到数值 (取文本中间 (机器码, 字符位置, 1))) .计次循环尾 () 返回 (二次加密文本) .子程序 _时钟_热键_周期事件 .如果 (取按键状态 (#F2键) ≠ 0) _按钮_记录_被单击 () .否则 .如果结束 .如果 (取按键状态 (#F4键) ≠ 0) 停止回放 = 真 .否则 .如果结束 .子程序 _列表框_脚本_列表项被选择 按钮_回放.禁止 = 假 按钮_删除.禁止 = 假 .子程序 _按钮_删除_被单击 删除文件 (取运行目录 () + “\scripts\” + 列表框_脚本.取项目文本 (列表框_脚本.现行选中项)) 现存脚本 () .子程序 __启动窗口_将被销毁 结束 () .子程序 _调节器_间隔时间_调节钮被按下 .参数 按钮值, 整数型 .如果 (按钮值 = 1) 编辑框_间隔时间.内容 = 到文本 (到数值 (编辑框_间隔时间.内容) + 1) .否则 .如果真 (到数值 (编辑框_间隔时间.内容) > 0) 编辑框_间隔时间.内容 = 到文本 (到数值 (编辑框_间隔时间.内容) - 1) .如果真结束 .如果结束 .子程序 _调节器_回放次数_调节钮被按下 .参数 按钮值, 整数型 .如果 (按钮值 = 1) 编辑框_回放次数.内容 = 到文本 (到数值 (编辑框_回放次数.内容) + 1) .否则 .如果真 (到数值 (编辑框_回放次数.内容) > 1) 编辑框_回放次数.内容 = 到文本 (到数值 (编辑框_回放次数.内容) - 1) .如果真结束 .如果结束 .子程序 _按钮_回放_被单击 脚本_回放 (取运行目录 () + “\scripts\” + 列表框_脚本.取项目文本 (列表框_脚本.现行选中项)) .子程序 _列表框_脚本_双击选择 载入 (窗口1, , 真) .子程序 _列表框_脚本_鼠标右键被放开, 逻辑型 .参数 横向位置, 整数型 .参数 纵向位置, 整数型 .参数 功能键状态, 整数型 弹出菜单 (Z, , ) .子程序 _重命名_被选择 .局部变量 脚本目录, 文本型 .局部变量 新文件名, 文本型 .判断开始 (输入框 (“请输入新脚本名称:”, “重命名脚本名称”, 列表框_脚本.取项目文本 (列表框_脚本.现行选中项), 新文件名, 1, _启动窗口)) 脚本目录 = 取运行目录 () + “\scripts\” .判断开始 (取文本右边 (新文件名, 4) ≠ “.mrc”) 新文件名 = 新文件名 + “.mrc” .默认 .判断结束 .判断开始 (文件更名 (脚本目录 + 列表框_脚本.取项目文本 (列表框_脚本.现行选中项), 脚本目录 + 新文件名)) 列表框_脚本.置项目文本 (列表框_脚本.现行选中项, 新文件名) .默认 .判断结束 .默认 .判断结束
运行结果:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
赞 (0)