首页 > 编程 > 易语言 > 正文

易语言仿按键精灵录制键盘鼠标操作的代码

2024-07-21 23:02:36
字体:
来源:转载
供稿:网友

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”  .默认  .判断结束  .判断开始 (文件更名 (脚本目录 + 列表框_脚本.取项目文本 (列表框_脚本.现行选中项), 脚本目录 + 新文件名))    列表框_脚本.置项目文本 (列表框_脚本.现行选中项, 新文件名)  .默认  .判断结束.默认.判断结束

运行结果:

易语言,按键精灵,录制,键盘,鼠标

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对VeVb武林网的支持。


注:相关教程知识阅读请移步到易语言教程频道。
发表评论 共有0条评论
用户名: 密码:
验证码: 匿名发表