本帖最后由 charis 于 2025-7-6 20:51 编辑
前段时间想找一个符合自我要求的鼠标点击器,好多功能太复杂了,就自己动手写了个,只实现了基本功能,并不完善,要求高的,请自行完善(未添加脚本验证等),也可能存在一定BUG,也不打算改进了。
成品文件下载地址:https://wwza.lanzouo.com/iQuQu30f4rje密码:d927
源码文件下载地址:https://wwza.lanzouo.com/iKD0f30f4rte密码:g3gs
2025.7.6看到评论区需要循环,增加了循环功能,因可能出现BUG,故未添加死循环的功能,有需求的请自取!
[Asm] 纯文本查看 复制代码
.版本 2
.版本 2
.支持库 shellEx
.支持库 iext
.支持库 spec
.支持库 eAPI
.程序集 窗口程序集_启动窗口
.程序集变量 hqwz, 整数型, , , 热键
.程序集变量 tjdj, 整数型, , , 热键
.程序集变量 tjyj, 整数型, , , 热键
.程序集变量 ksyx, 整数型, , , 热键
.程序集变量 tzyx, 整数型, , , 热键
.程序集变量 bcjb, 整数型, , , 热键
.程序集变量 ckjb, 整数型, , , 窗口句柄
.程序集变量 bqjb, 整数型, , , 标签句柄
.程序集变量 tzxh, 逻辑型, , , 停止信号
.程序集变量 sfks, 逻辑型, , , 是否开始
.子程序 __启动窗口_创建完毕
ckjb = _启动窗口.取窗口句柄 ()
bqjb = 提示标签.取窗口句柄 ()
hqwz = 注册热键 (ckjb, bqjb, 0, #F1键)
tjdj = 注册热键 (ckjb, bqjb, 0, #F2键)
tjyj = 注册热键 (ckjb, bqjb, 0, #F3键)
ksyx = 注册热键 (ckjb, bqjb, 0, #F4键)
tzyx = 注册热键 (ckjb, bqjb, 0, #F5键)
bcjb = 注册热键 (ckjb, bqjb, 0, #F6键)
tzxh = 假
sfks = 假
状态条1.置文本 (0, “程序启动完成!”)
.子程序 _提示标签_反馈事件, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型
.局部变量 线程句柄, 整数型
.判断开始 (参数一 = hqwz)
脚本编辑框.加入文本 (获取当前位置 () + #换行符 + “ys,” + 延时编辑框.内容 + “” + #换行符)
.判断 (参数一 = tjdj)
脚本编辑框.加入文本 (“sbdj” + #换行符 + “ys,” + 延时编辑框.内容 + “” + #换行符)
.判断 (参数一 = tjyj)
脚本编辑框.加入文本 (“sbyj” + #换行符 + “ys,” + 延时编辑框.内容 + “” + #换行符)
.判断 (参数一 = ksyx 且 sfks = 假)
_开始运行按钮_被单击 ()
tzxh = 假
.判断 (参数一 = tzyx 且 sfks = 真)
_停止运行按钮_被单击 ()
.判断 (参数一 = bcjb)
保存脚本 ()
.默认
.判断结束
.子程序 开始运行
执行脚本 (脚本编辑框.内容)
.子程序 停止运行
tzxh = 真
状态条1.置文本 (0, “已停止运行”)
.子程序 保存脚本
保存通用对话框.初始目录 = 取运行目录 ()
保存通用对话框.打开 ()
写到文件 (保存通用对话框.文件名, 到字节集 (脚本编辑框.内容))
.子程序 获取当前位置, 文本型
返回 (“yd,” + 到文本 (取鼠标水平位置 ()) + “.” + 到文本 (取鼠标垂直位置 ()) + “”)
.子程序 __启动窗口_将被销毁
撤销热键 (ckjb, bqjb)
.子程序 _获取位置按钮_被单击
脚本编辑框.加入文本 (获取当前位置 () + #换行符 + “ys,” + 延时编辑框.内容 + “” + #换行符)
.子程序 _添加单击按钮_被单击
脚本编辑框.加入文本 (“sbdj” + #换行符 + “ys,” + 延时编辑框.内容 + “” + #换行符)
.子程序 _添加右击按钮_被单击
脚本编辑框.加入文本 (“sbyj” + #换行符 + “ys,” + 延时编辑框.内容 + “” + #换行符)
.子程序 执行脚本
.参数 脚本内容, 文本型
.局部变量 执行进度, 整数型
.局部变量 代码数组, 文本型, , "0"
.局部变量 指令, 文本型, , "0"
.局部变量 当前行, 文本型
.局部变量 X, 整数型
.局部变量 tmp, 文本型, , "0"
.局部变量 Y, 整数型
.局部变量 循环次数, 整数型
.局部变量 n, 整数型
.如果 (到整数 (循环次数编辑框.内容) = 0)
tzxh = 假
sfks = 真
状态条1.置文本 (0, “正在单次运行中”)
代码数组 = 分割文本 (删全部空 (脚本内容), #换行符, )
.计次循环首 (取数组成员数 (代码数组), 执行进度)
.如果 (tzxh = 真)
跳出循环 ()
.否则
当前行 = 删全部空 (代码数组 [执行进度])
指令 = 分割文本 (当前行, “,”, )
.判断开始 (指令 [1] = “yd”)
tmp = 分割文本 (指令 [2], “.”, )
X = 到整数 (tmp [1])
Y = 到整数 (tmp [2])
鼠标_移动 (, X, Y)
.判断 (指令 [1] = “ys”)
延迟 (到整数 (指令 [2]))
.判断 (指令 [1] = “sbdj”)
模拟鼠标点击 (取鼠标水平位置 (), 取鼠标垂直位置 (), 0)
.判断 (指令 [1] = “sbyj”)
模拟鼠标点击 (取鼠标水平位置 (), 取鼠标垂直位置 (), 2)
.默认
.判断结束
处理事件 ()
.如果结束
.计次循环尾 ()
_停止运行按钮_被单击 ()
.否则
.计次循环首 (到整数 (循环次数编辑框.内容), n)
tzxh = 假
sfks = 真
状态条1.置文本 (0, “正在循环运行中,已运行” + 到文本 (n) + “次数,还剩余” + 到文本 (到整数 (循环次数编辑框.内容) - n) + “次!”)
代码数组 = 分割文本 (删全部空 (脚本内容), #换行符, )
.计次循环首 (取数组成员数 (代码数组), 执行进度)
.如果 (tzxh = 真)
跳出循环 ()
.否则
当前行 = 删全部空 (代码数组 [执行进度])
指令 = 分割文本 (当前行, “,”, )
.判断开始 (指令 [1] = “yd”)
tmp = 分割文本 (指令 [2], “.”, )
X = 到整数 (tmp [1])
Y = 到整数 (tmp [2])
鼠标_移动 (, X, Y)
.判断 (指令 [1] = “ys”)
延迟 (到整数 (指令 [2]))
.判断 (指令 [1] = “sbdj”)
模拟鼠标点击 (取鼠标水平位置 (), 取鼠标垂直位置 (), 0)
.判断 (指令 [1] = “sbyj”)
模拟鼠标点击 (取鼠标水平位置 (), 取鼠标垂直位置 (), 2)
.默认
.判断结束
处理事件 ()
.如果结束
.计次循环尾 ()
.判断开始 (tzxh = 真)
跳出循环 ()
.默认
.判断结束
.计次循环尾 ()
_停止运行按钮_被单击 ()
.如果结束
.子程序 _开始运行按钮_被单击
tzxh = 假
开始运行按钮.禁止 = 真
添加右击按钮.禁止 = 真
添加单击按钮.禁止 = 真
获取位置按钮.禁止 = 真
循环次数编辑框.禁止 = 真
延时编辑框.禁止 = 真
开始运行 ()
.子程序 _停止运行按钮_被单击
sfks = 假
停止运行 ()
开始运行按钮.禁止 = 假
添加右击按钮.禁止 = 假
添加单击按钮.禁止 = 假
获取位置按钮.禁止 = 假
循环次数编辑框.禁止 = 假
延时编辑框.禁止 = 假
2025.7.6看到评论区需要循环,增加了循环功能,因可能出现BUG,故未添加死循环的功能,有需求的请自取!
2025.7.6看到评论区需要循环,增加了循环功能,因可能出现BUG,故未添加死循环的功能,有需求的请自取!