易语言仿按键精灵录制键盘鼠标操作的代码
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”
.默认
.判断结束
.判断开始 (文件更名 (脚本目录 + 列表框_脚本.取项目文本 (列表框_脚本.现行选中项), 脚本目录 + 新文件名))
列表框_脚本.置项目文本 (列表框_脚本.现行选中项, 新文件名)
.默认
.判断结束
.默认
.判断结束
运行结果:
总结
以上是 易语言仿按键精灵录制键盘鼠标操作的代码 的全部内容, 来源链接: utcz.com/z/352021.html