.版本 2.DLL命令 取按键状态, 短整数型, "user32.dll", "GetAsyncKeyState" .参数 鼠标键, 整数型.DLL命令 取鼠标位置, 整数型, "user32.dll", "GetCursorPos" .参数 当前鼠标位置, 鼠标位置, 传址.DLL命令 模拟鼠标按键, , , "mouse_event" .参数 鼠标动作, 整数型 .参数 水平位置, 整数型 .参数 垂直位置, 整数型 .参数 鼠标按键, 整数型 .参数 扩展信息, 整数型.DLL命令 模拟键盘按键, , , "keybd_event" .参数 bVk, 字节型 .参数 bScan, 字节型 .参数 dwFlags, 整数型 .参数 dwExtraInfo, 整数型
.版本 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” .默认 .判断结束 .判断开始 (文件更名 (脚本目录 + 列表框_脚本.取项目文本 (列表框_脚本.现行选中项), 脚本目录 + 新文件名)) 列表框_脚本.置项目文本 (列表框_脚本.现行选中项, 新文件名) .默认 .判断结束.默认.判断结束