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

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)

相关推荐

  • 易语言利用鼠标模拟点击的方式实现自动画图的代码

    DLL命令表 .版本 2 .DLL命令 PostMessageA, 整数型, "user32.dll", "PostMessageA", , 如果函数调用成功,返回非零值:如果函数调用失败,返回值是零 .参数 hWnd, 整数型, , 其窗口程序接收消息的窗口的句柄 .参数 Msg, 整数型, , 指定被寄送的消息 .参数 wParam, 整数型, , 指定附加的消息特定的信息 .参数 IParam, 整数型, , 指定附加的消息特定的信息 自动绘画的代码 此功能需

  • 易语言模拟鼠标点击实现方法

    易语言对于初学者而言是一种非常好学的中文编程语言,能够快速地实现很多功能,全汉语编程,简单易上手,易语言功能强大实用,系统全部自行设计开发,且易语言自带的即时帮助系统,非常方便. 这里,教大家如何实现模拟鼠标点击. 1.进入易语言界面,在右边的工具栏中,分别找到"编辑框""标签""按钮"三个控件. 2.在主编辑界面中,如图所示摆放位置,进行初步界面搭建. 3.在左侧的属性栏中找到"标题"属性,分别给标签设置为"X&q

  • 易语言设置鼠标移动到组件上时的文本显示颜色

    热点颜色属性 所属对象:超级链接框   操作系统支持:Windows,数据类型:整数型: 将整数型数据赋值到指定对象的热点颜色属性中 语法:对象.热点颜色 = 整数型 应用对象:超级链接框 例程 说明: 本属性设置鼠标移动到组件上时的文本显示颜色. 设置超级链接框的热点颜色为热点颜色选择器选择的颜色. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接

  • 易语API监视鼠标状态教学

    调用API来进行监视鼠标状态--判断鼠标哪个键按下与放开 1.新建一个"易语言"窗口程序 2.API命令可下载易语言API编程助手进行查询 我们需要的API命令有 CallNextHookEx--呼叫下一钩子 SetWindowsHookExA--安装系统钩子 UnhookWindowsHookEx--卸载系统钩子 不同翻译的翻译结果也不同,大致了解下就可以了 3.还有一个API命令 GetModuleHandleA--取实例句柄 用来取窗口句柄的 4.对了,API的参数类型要改下,D

  • 易语言键盘钩子与鼠标钩子的状态参数值表

    我们给大家分享介绍了键盘和鼠标的钩子用法代码: 鼠标钩子: 子程序只有一个参数:鼠标状态 512 鼠标移动 513 左键按下 514 左键弹起 516 右键按下 517 右键弹起 519 中键按下 520 中键弹起 522 中键滚动 键盘钩子: 回调指针子程序有两个参数:键代码 键盘状态 键盘状态数值如下: 256 键盘按下 257 键盘弹起 260 ALT键按下 以上就是本次介绍的全部内容,感谢大家对我们的支持.

  • 易语言查找指定颜色并将鼠标移动到指定坐标的代码

    DLL命令表 .版本 2 .DLL命令 移动鼠标, , "user32", "SetCursorPos" .参数 x, 整数型 .参数 y, 整数型 查找指定颜色例程 .版本 2 .程序集 窗口程序集1 .子程序 _查找按钮_被单击, , , 查找颜色 .局部变量 临时字节集, 字节集 .局部变量 颜色, 字节集 .局部变量 找到位置, 整数型 .局部变量 x, 整数型 .局部变量 y, 整数型 .局部变量 宽, 整数型 .局部变量 高, 整数型 临时字节集 = 快

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

    DLL命令表 .版本 2 .DLL命令 取按键状态, 短整数型, "user32.dll", "GetAsyncKeyState" .参数 鼠标键, 整数型 .DLL命令 取鼠标位置, 整数型, "user32.dll", "GetCursorPos" .参数 当前鼠标位置, 鼠标位置, 传址 .DLL命令 模拟鼠标按键, , , "mouse_event" .参数 鼠标动作, 整数型 .参数 水平位置,

  • 易语言插件按键精灵调用方法

    给按键精灵写插件的方法有很多,例如vc,vb,乃至delphi.但是,使用这些程序语言给按键精灵写插件,对编写者的要求比较高.易语言呢,编程门槛比较低,也有很多开源不开源的模块,但是在8.2版本之前,按键精灵是不支持易语言编写插件的.当然,现在就没有这个问题了.今天我就教大家怎么用易语言给按键精灵写一个简单的插件. 1.至于安装按键精灵和易语言,相信大家都会的,这里主要讲怎么写插件,安装步骤就暂时略过.首先找到按键精灵的安装目录,找到source文件夹打开 2.找到 QMPlugin插件制作模版

  • 易语言通过post实现对小米路由器操作的代码

    操作小米路由器的代码 此功能需要加载精易模块5.6 .版本 2 .支持库 iext2 .程序集 窗口程序集_启动窗口 .程序集变量 IP, 文本型 .程序集变量 cookie, 文本型 .程序集变量 token, 文本型 .子程序 登录, 文本型 .参数 密码, 文本型 .参数 返回内容, 文本型, 参考 .参数 token, 文本型, 参考 .局部变量 临时, 文本型 .局部变量 deviceId, 文本型 .局部变量 key, 文本型 .局部变量 时间戳, 文本型 .局部变量 随机数, 文本

  • Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】

    本文实例讲述了Python实现监控键盘鼠标操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pythoncom import pyHook import time def onMouseEvent(event): "处理鼠标事件" fobj.writelines('-' * 20 + 'MouseEvent Begin' + '-' * 20 + '\n') fobj.writelines("Current Time:%s\

  • 易语言中关于“关闭”命令的数据库操作

    本命令关闭已经被打开的指定数据库.如果没有提供数据库名称,默认为关闭当前数据库.如果当前数据库被关闭,当前数据库状态值将被设置为空,此时可重新使用"置当前库"命令来进行相应设置. 语法: 无返回值 关闭 ([数据库别名或名称]) 参数名 描 述 数据库别名或名称 可选的:文本型.参数值如果被省略,默认为关闭当前数据库. 例程: 说明: 启动窗口创建完毕后打开2个数据库,按下"关闭当前库"按钮后,"关闭()"命令将关闭当前数据库:按下"关

  • 易语言通过按键模拟的方式实现QQ后台加人加群的代码

    DLL命令表 .版本 2 .DLL命令 GetModuleHandle, 整数型, "kernel32", "GetModuleHandleA" .参数 lpModuleName, 文本型 .DLL命令 GetDesktopWindow, 整数型, "user32.dll", "GetDesktopWindow" .DLL命令 CreateToolhelp32Snapshot, 整数型, "kernel32"

  • 易语言仿360悬浮窗实现流量监控和内存优化的代码

    DLL命令表 .版本 2 .DLL命令 GlobalMemoryStatus, 整数型, "kernel32", "GlobalMemoryStatus" .参数 lpBuffer, MEMORYSTATUS .DLL命令 OpenProcess, 整数型, "Kernel32.dll", "OpenProcess" .参数 dwDesiredAccess, 整数型 .参数 bInheritHandle, 整数型 .参数 dw

  • 易语言通过解析免费下载QQ付费音乐的代码

    常量数据表 .版本 2 .常量 链接1, "<文本长度: 9>" .常量 链接2, "<文本长度: 2>" QQ付费音乐下载器 此功能配合精易模块5.6使用,需要加载模块. .版本 2 .支持库 downlib .支持库 iext .支持库 spec .支持库 shell .程序集 窗口程序集_启动窗口 .程序集变量 任务, 任务参数 .程序集变量 下载限速, 整数型 .程序集变量 下载对象, 下载对象 .子程序 _按钮1_被单击 .如果 (

  • 易语言制作QQ前台全自动无限加好友的代码

    全局变量表 .版本 2 .全局变量 局_句柄, 整数型 .全局变量 a, 整数型 .全局变量 局1_句柄, 整数型 .全局变量 b, 整数型 常量数据表 .版本 2 .常量 GW_CHILD, "5", , 查找子窗口 .常量 GW_HWNDNEXT, "2", , 查找下一窗口 QQ前台全自动加好友 此功能需要加载精易模块5.6,利用模拟的方式添加好友,需要自行打开添加窗口,填写自己的QQ名称. .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子

随机推荐