在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → E模拟按键录制.e

E模拟按键录制.e

一般编程问题

下载此实例

实例介绍

【实例简介】E模拟按键录制.e

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条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警