前言
按键精灵2014学习笔记 按键精灵2014的脚本是基于VB开发的,可以使用部分VB内置命令;按键精灵X的脚本是基于Lua开发的 源码的后缀名为.Q
,但是文件中不仅包含了源码,还包含了文件属性,可以通过按键精灵2014的编辑器来修改和调试源码
注释
延时
<num>
:延迟的时间,单位毫秒
声明变量
声明全局变量
定义变量
定义用户变量
1 UserVar 变量名 = "参数默认值" "提示信息"
输出到控制台
数据类型
字符串
字符串拼接
字符串分割
1 2 3 字符串数组变量名 = Split(字符串, "分割符") 字符串数组第一个值 = 字符串数组变量名(0)
查找子字符串
查找子字符串在父字符串中的位置,如果没有找到返回0
替换子字符串
1 Replace("父字符串", "旧的子字符串", "新的子字符串")
倒置字符串中的字符顺序
截取字符串
转义字符
换行符
数组
定义数组
获取数组长度
运算符
比较运算符
逻辑运算符
循环语句
Where循环
For循环
<num>
:循环次数
条件语句
数值判断
1 2 3 4 5 IF 条件 Then ... ElseIf 条件 ... End If
颜色判断
获取鼠标当前位置的颜色值
1 变量名 = GetPixelColor(像素点横坐标, 像素点纵坐标)
定位找色
<x>
:x轴坐标 <y>
:y轴坐标 FFFFFF
:十六进制颜色值 0表示相同,1表示不相同,2表示相似
1 2 3 4 5 IfColor <x>,<y>,"FFFFFF",0 Then ... Else ... End If
区域找色
在一个区域内从左上角开始找色,按照先从左再到右、先从上再到下的顺序
<x_start>,<y_start>
:选区左上角的横纵坐标 <x_end>,<y_end>
:选区右下角的横纵坐标 intX
:返回值,找到的结果x坐标,如果找不到就返回小于1的数 intY
:返回值,找到的结果y坐标,如果找不到就返回小于1的数
1 2 3 4 FindColor <x_start>,<y_start>,<x_end>,<y_end>,"FFFFFF",intX,intY If intX > 0 And intY > 0 Then ... End If
更多配置
<mod>
:指定找色模式 > 0
:从左上到右下 > 1
:从中心开始 > 2
:从右下到左上
<similarity>
:指定颜色相似度,范围[0,1]
1 2 3 4 FindColorEx <x_start>,<y_start>,<x_end>,<y_end>,"FFFFFF",<mod>,<similarity>,intX,intY If intX > 0 And intY > 0 Then ... End If
图片判断
按键精灵只能识别.bmp
格式的位图 不能找单色图片 如果图片的四个角的像素点的颜色一样,则该图片中存在的所有该颜色都视为透明
<file_name>.bmp
:附件中的图片名
1 2 3 4 FindPic <x_start>,<y_start>,<x_end>,<y_end>,"<file_name>.bmp",<similarity>,intX,intY If intX > 0 And intY > 0 Then ... End If
查找标准色块数量
相似度:取值范围为[0,1] 颜色值:6位的十六进制颜色值,顺序是BGR
1 变量名 = Plugin.Color.CountBlockNum(左上角横坐标, 左上角纵坐标, 右下角横坐标, 右下角纵坐标, 颜色值, 相似度)
后台查找标准色块数量
1 变量名 = Plugin.Bkgnd.CountBlockNum(窗口句柄, 左上角横坐标, 左上角纵坐标, 右下角横坐标, 右下角纵坐标, 颜色值, 相似度)
后台查找标准色块位置
1 变量名 = Plugin.Bkgnd.GetBlockRange(窗口句柄, 左上角横坐标, 左上角纵坐标, 右下角横坐标, 右下角纵坐标, 颜色值, 相似度)
操作鼠标
获取鼠标当前位置的坐标
移动鼠标
绝对定位移动
屏幕坐标系的原点为屏幕左上角,向右为x轴的正方向,向下为y轴的正方向
<x>
:x轴坐标 <y>
:y轴坐标
相对定位移动
<x>
:横坐标的增量,正数为向右,负数为向左 <y>
:纵坐标的增量,正数为向下,负数为向上
左键单机
<num>
:单机次数
操作键盘
程序暂停等待按键
获取按下的键码值
检测上次按过的键
获取键盘上一次按下的键码值,包括程序未运行时按下的按键
默认没有按键按下时得到的值为0
检测到按键后会立即将键码值赋值给变量,如果之后没有按键继续按下,变量值会恢复为0
输出字符串
后台输出字符串
1 Call Plugin.Bkgnd.SendString(句柄变量名, "文本内容")
按下指定按键
<num>
:按键按下次数
后台按下指定按键
键码值 > 13
:回车键
1 Call Plugin.Bkgnd.KeyPress(句柄变量名, 键码值)
字符转键码值
弹出消息窗
屏幕输出文本框
文本字号为16像素
文本框的颜色为白底
超出文本框的文字会被隐藏
颜色值:6位的十六进制颜色值,顺序是BGR
1 Call Plugin.Msg.ShowScrTXT(文本框左上角横坐标, 文本框左上角纵坐标, 文本框右下角横坐标, 文本框右下角纵坐标, "文本内容", 颜色值)
清除文本框
状态栏图标气泡
1 Call Plugin.Msg.Tips("文本内容")
子程序
定义子程序
无参
有参
1 2 3 4 5 Sub 子程序名(形参名, 形参名) ... End Sub
调用子程序
无参
有参
窗口句柄
获取窗口句柄
通过鼠标的位置获取窗口句柄
1 句柄变量名 = Plugin.Window.MousePoit()
通过类名获取窗口句柄
获取根级的窗口句柄
1 句柄变量名 = Plugin.Window.Find("窗口类名", "窗口标题")
1 句柄变量名 = Plugin.Window.Find("窗口类名", 0)
获取子级的窗口句柄
1 子窗口句柄变量名 = Plugin.Window.FindEx(句柄变量名, 0, 0, 0)
通过窗口句柄获取窗口位置
1 窗口位置变量 = Plugin.Window.GetWindowRect(句柄变量名)
1 左上角横坐标|左上角纵坐标|右下角横坐标|右下角纵坐标
通过窗口句柄操作鼠标
单机左键
这种方式操作鼠标时,无论是否在屏幕内,无论是否在前台,都可以正常执行点击
1 Call Plugin.Bkgnd.LeftClick(句柄变量名, 相对于窗口左上角的横坐标, 相对于窗口左上角的纵坐标)
生成随机数
<seed>
:随机数种子类型 > 大于0、省略:将生成的随机数列表中的下一个随机数作为随机数种子 > 小于0:使用该值作为随机数种子,每次都相同 > 0
:使用最近生成的数作为随机数种子
生成指定范围的随机数
<max>
:最大值 <min>
:最小值
1 Int((<max> - <min> + 1) * Rnd + <min>)
重置随机数种子
事件
脚本停止运行事件
1 2 3 Sub OnScriptExit() End Sub
点击事件
Form1
:第一个窗口 Button1
:第一个按钮
1 2 3 Event Form1.Button1.Click ... End Event
窗体加载事件
1 2 3 Event Form1.Load ... End Event
QUI组件
文本框
获取文本框内容
转换为整型
1 Int(Form1.ImpotBox.Text)
修改文本框内容
1 Form1.ImpotBox.Text = "文本内容"
下拉列表
定义所有选项
前端显示
1 Form1.ComboBox1.List = "是|否"
后段实际数据
1 2 3 4 subfix = Array(true, false) If subfix(Form1.ComboBox1.ListIndex) == true Then End If
定义默认选项
1 Form1.ComboBox1.ListIndex = 0
文件选择
1 变量名 = Plugin.File.SelectFile()
运行程序
<file>
:文件绝对路径
多线程
启动线程
1 2 3 4 5 6 7 8 9 10 BeginThread 子程序名1 BeginThread 子程序名2 Sub 子程序名1 ... End Sub Sub 子程序名2 ... End Sub
获取线程ID
停止指定线程
继续线程
配置文件
小精灵配置文件
在小精灵同级目录下创建uservar.ini
配置文件
<uuid>
:UUID <value>
:值
uservar.ini 1 2 [<uuid>] Form1.InputBox1.Text =<value>
写入自定义配置文件
1 Call Plugin.File.WriteINI("小节", "键", "值", "C:\Config.ini")
读取自定义配置文件
1 变量名 = Plugin.File.ReadINI("小节", "键", "C:\Config.ini")
获取当前时间
从当前系统获取时间
1 变量名 = Plugin.Sys.GetDateTime()
从网络获取时间
字符串作为命令执行
读写文件
打开文件
如果打开成功会返回文件句柄
如果打开失败会返回-1
1 文件句柄 = Plugin.File.Open("文件路径")
关闭文件
1 Call Plugin.File.Close(文件句柄)
读取文件
按行读取文件
1 2 3 4 变量名 = Plugin.File.ReadLine(文件句柄) While 句柄变量名 <> "" 变量名 = Plugin.File.ReadLine(文件句柄) Wend
设置文件读写位置
1 Call Plugin.File.SeekFile(文件句柄, 位置)
获取文件内容长度
1 变量名 = Plugin.File.GetFileLength("文件路径")
写入文件
文件末尾追加一行文本
1 Call Plugin.File.WriteFileFx("文件路径", "文本内容")
在当前光标处写入文本
1 Call Plugin.File.WriteFile("文本内容")
在文件末尾追加写入
1 2 3 文件内容长度 = Plugin.File.GetFileLength("文件路径") Call Plugin.File.SeekFile(文件句柄, 文件内容长度) Call Plugin.File.WriteFile("文本内容")
在当前光标处写入一行文本
1 Call Plugin.File.WriteLine("文本内容")
在文件末尾追加写入
1 2 3 文件内容长度 = Plugin.File.GetFileLength("文件路径") Call Plugin.File.SeekFile(文件句柄, 文件内容长度) Call Plugin.File.WriteLine(Chr(13) & "文本内容")
读写Excel文件
打开Excel文件
1 Call Plugin.Office.OpenXls("文件路径")
关闭文件
1 Call Plugin.Office.CloseXls()
写入文件
工作簿下标
:从1开始 单元格行的下标
:从1开始 单元格列的下标
:从1开始
1 Plugin.Office.Write(工作簿下标, 单元格行的下标, 单元格列的下标, "文本内容")
发送HTTP请求
Get
False
:是否是异步请求
1 2 3 4 5 6 7 8 9 Set xPost = createObject("Msxml2.ServerXMLHTTP3.0") xPost.Open "Get", "http://127.0.0.1:80/?key=value", False xPost.Send Delay 10 If xPost.readyState = 4 Then 变量名 = xPost.responsetext End If xPost.abort Set xPost = Notbing
Post
False
:是否是异步请求
1 2 3 4 5 6 7 8 9 Set xPost = createObject("Msxml2.ServerXMLHTTP3.0") xPost.Open "Post", "http://127.0.0.1:80/", False xPost.Send("key=value") Delay 10 If xPost.readyState = 4 Then 变量名 = xPost.responsetext End If xPost.abort Set xPost = Notbing
保存截图
1 Plugin.Pic.PrintScreen(左上角横坐标, 左上角纵坐标, 右下角横坐标, 右下角纵坐标, 图片保存路径)
操作剪贴板
获取剪贴板内容
1 变量名 = Plugin.Sys.GetCLB()
函数
函数和子程序基本相同
函数可以有返回值,子程序没有返回值
1 2 3 Function 函数名 ... End Function
1 2 3 Function 函数名 函数名 = 返回值 End Function
命令库
在命令库右键->新建
->定义命令名称->确定
在命令代码区中添加多个子程序或函数
调用命令
完成
参考文献
哔哩哔哩——酷玩蚊仔 哔哩哔哩——沧桑大侠