星空软件

 找回密码
 立即注册

[其它] 易语言鼠标键盘录制脚本,模拟按键精灵,附源码下载

马宝清马宝清 | 2021-8-6 12:47:01 | 显示全部楼层 |阅读模式
按键精灵大家用过没,是一款键盘鼠标录制脚本,感觉很强大和实用,那么今天我们将要为大家带来一款用易语言写的键盘鼠标录制脚本,和按键精灵的运行原理类似,可以直接录制动作,还可以把录制的动作保存为语法,然后保存到本地,进行动作回放,效果非常强大,感觉可以和按键媲美了哈哈。
易语言源码下载地址:
201855161218.zip (8.72 KB, 下载次数: 21)
脚本特色功能:
  • 录制、停止
  • 回放、删除
  • 现存脚本显示
  • 回放间隔
  • 回放次数
  • 录制时最小化
  • 回放时最小化
脚本使用教程:
1、打开脚本,进入脚本的主界面,然后点击录制按钮
截图202108061244341595.png
2、录制完脚本,我们点击停止按钮
截图202108061245128233.png
3、点击回放按钮就可以执行录制完的脚本
截图202108061245559843.png
源代码分享:
.版本 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"
.局部变量 脚本文本, 文本型

缓冲区记录数 = 到文本 (取数组成员数 (操作记录))
' **********************************************
' 资源免费学习下载  www.hibbba.com
' 资源投稿分享邮箱  52281565@qq.com
' QQ群 https://jq.qq.com/?_wv=1027&k=452NJQu
' **********************************************

取按键状态 (#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”
    .默认

    .判断结束
    .判断开始 (文件更名 (脚本目录 + 列表框_脚本.取项目文本 (列表框_脚本.现行选中项), 脚本目录 + 新文件名))
        列表框_脚本.置项目文本 (列表框_脚本.现行选中项, 新文件名)
    .默认

    .判断结束

.默认

.判断结束




上一篇:飞鸟可编程营销系统,让功能可DIY,通用性更强
下一篇:飞鸟语法录制插件的使用教程
回复

使用道具 举报

gui57 | 2021-8-6 12:49:48 | 显示全部楼层
好强大的功能啊
回复

使用道具 举报

123457067 | 2021-8-6 12:49:59 | 显示全部楼层
跟按键精灵一个样子着
回复

使用道具 举报

俏蝶吹 | 2021-8-6 12:50:15 | 显示全部楼层
这个可以二次开发优化是吗
回复

使用道具 举报

此人正在学习 | 2021-8-6 12:50:21 | 显示全部楼层
继续优化吧
回复

使用道具 举报

快乐宝贝567 | 2021-8-6 12:50:31 | 显示全部楼层
感谢作者分享,还能免费使用,谢谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

全站声明【必看】|小黑屋|新库软件 |网站地图

GMT+8, 2024-3-29 23:15 , Processed in 0.068095 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.