一、数据类型
1.1数据类型
可以表示一切的类型variant
逻辑类型:boolean (true,false)
数学类型:
整数:byte(0-255),integer(-32768-32767),long(-21亿-21亿)
小数:single,double,currency(货币类型,包含4位小数,-922337203685477.5808-922337203685477.5807)
文字类型:string
时间类型:Date(Time)
其他类型:null(空)empty(已撤销或未初始化)object(任何对象)

1.2类型转换
"123"+"456"="123456"
"123"+456=579
true→-1 flase→0
命令:(强制转换)
cbool,cbyte,cint,clong,csng,cdbl,ccur,cdate,cstr
数学类型转布尔类型,非0为真

1.3数据的表示
逻辑类型:true,flase
数学类型:
整数:123456
小数:3.1415926
八进制:&o12345
十六进制:&H1A2B3(&H前缀)
E数:3.14E10
文字类型:“”
时间类型:
紧凑的数据,2014/6/5 22:25:00 TracePrint now()
格式化 ##之间填入 例:#1/1/2000 02:25:00#
特例:TracePrint cdate(1/1/2000 02:25:00)
命令:Hex转十六进制 Oct转八进制

二、语言规范
命名规则:
标识符必须唯一
标识符只允许由字母或汉字开头
标识符由字母、汉字、数字、下划线组成
标识符含字母的情况下不区分大小写
标识符最长允许255字符,中文不超过59个字
标识符不可以与关键字相同
语法与词法:
注释://后面,'后面,/*中间*/
定义:Dim定义变量,Dim aa(10)定义数组,Const定义常量
表达式:结果=表达式,+-*/
命令:call 命令名字(参数),命令名 参数,结果=命令名(参数)

运算符:
数学运算:+-*/\(整数除法)^ mod(余数)
文字运算:+ &(文字拼贴)
逻辑运算:=<> > < >= <= and与 or或 xor异或 eqv等价 imp蕴含
一元运算:-负数 not非
数组:Dim a(5) //和其他语言不一样,有6个
a=array(0,1,2,3,5,8)
UBonund(a)+1获得数组下标
动态数组:Dim a()
ReDim a(2) //之前数据清楚
ReDim Preserve a(5) //保留之前数据

三、语句
3.1结构化语句 上下行能产生关联的语句被成为结构化语句。
顺序结构 跳转结构 选择结构 循环结构

Rem 标记命令,可做注释,也可以做Goto跳转的标记
3.2If语句
If 1+1=2 Then
TracePrint "表达式成立"
Else
TracePrint "不成立"
End If
单行: If 1+1=2 Then TracePrint "表达式成立"
3.3Select语句 只执行一个case块
Select Case 表达式
Case 值
语句块
……
Case Else

End Select
3.4For语句
For 次数
语句块
Next

For i=2 To 4 Step 1 不写Step默认为1
语句块
Next
3.5Do语句
Do
语句块
Loop

Do While 条件表达式
语句块
Loop

Do Util 条件
语句块
Loop

Do
语句块
Loop While 条件

Do
语句块
Loop Util 条件

3.6命令的几种写法
标识符
标识符 参数1,参数2,……
Call 标识符(参数1,参数2,……)
Call 标识符()
标识符=标识符(参数1,参数2,……)
TracePrint 标识符(参数1,参数2,……)

3.7子过程
Sub 标识符(参数,参数...)
代码块
End Sub

3.8函数 //函数可以有返回值,子过程不可以
Function 标识符(参数,参数...)
代码块
End Function

四、前台
4.1前台鼠标命令
MoveTo 100,200 //把鼠标移动到(100,200)这个点上
MoveR 200,300 //之后,鼠标就被移到了(100+200,100+300)处,也就是坐标(300,400)处
LeftClick 5 //在当前鼠标的位置单击鼠标左键5次
LeftDown 1 //在当前鼠标的位置按下鼠标左键
LeftUp 1 //在当前鼠标的位置弹起鼠标左键
LeftDoubleClick 5 //在当前鼠标的位置双击鼠标左键5次
RightClick 5
RightDown 1
RightUp 1
RightDoubleClick 5
MiddleClick 5 //在当前鼠标的位置单击鼠标中键5次
MouseWheel 1 //把鼠标滚轮向上滚动1格
LockMouse //锁定鼠标位置
UnlockMouse //解除锁定鼠标位置
WaitClick //按任意鼠标键继续 左键32769(按下) 右键32773(按下) 滚轮32777(按下)
GetLastClick //检测上次按过的鼠标键 左键32770(弹起) 右键32774(弹起) 滚轮32778(弹起)
GetCursorPos mx,my //把当前鼠标位置的x和y坐标放在变量mx和my中
GetCursorShape // 得到当前鼠标的形状特征
SetSimMode //设置模拟方式(0普通|1硬件|2超级)
4.1前台键盘命令
KeyPress 65,1 //65是A键的按键码,上面的语句表示按A键1次
KeyDown 65,1 // 键盘按住A键1次
KeyUp 65,1 //松开A键1次
Key=WaitKey()
Key=GetLastKey() //检测上次按键
4.2前台找图命令
FindPic //在屏幕区域查找指定相似度的图片
FindPic 左上角x坐标,左上角y坐标,右下角x,右下角y,bmp格式图片路径,相似度,返回x,返回y
If intX>=0 Then
代码
End If
路径: 24位位图
绝对路径 c:\Windows\notepad.exe
相对路径 .\当前路径 ..\上一级
附件 Attachment:\
分辨率 Plugin.Sys.GetScRX Plugin.Sys.GetScRY

透明色找图
等图找多图
Function 找多图(图片路径)
图片=Split(图片路径,"|")
For i=0 To ubound(图片)
FindPic 0,0,Plugin.Sys.GetScRX-1,Plugin.Sys.GetScRY-1,"Attachment:\"& 图片路径,1,intX,intY
If IntX>=0 Then
找多图 = i+1
Exit For
End If
Next
End Function
4.3前台颜色命令
cr1=GetPixelColor(x,y) 得到指定点颜色
FindColor 0,0,800,600,"0000FF",x,y 找色
FindCenterColor //在屏幕区域从中心开始查找指定的颜色
FindColorEx 0,0,800,600,"0000FF",查找方式,0.8,x,y //在屏幕区域模糊查找指定的颜色,//查找方式。0为从上往下,从左往右找;1为从中心往外围找
4.4其他命令
Delay 延迟多少毫秒
MsgBox 弹出对话框
InputBox 弹出窗口,返回输入
TracePrint 调试输出
SayString 输入文字
PutAttachment 把当前脚本包含的附件展开到指定的路径下
RunApp "notepad.exe" 启动一个程序或者打开一个文件
ExitScript 脚本退出运行
RestartScript 重新启动脚本运行
4.5窗口
窗口句柄=Plugin.Window.Find("Notepad", 0) //查找窗口类名("Notepad")或者标题(0),返回找到的句柄Hwnd
窗口句柄=Plugin.Window.Search("记事本") //遍历符合窗口标题("记事本")的句柄保存到数组(HwndEx)里
窗口句柄=Plugin.Window.Foreground() //得到当前最前面的窗口句柄
窗口句柄=Plugin.Window.MousePoint() //下面这句是得到鼠标指向的窗口句柄
Call Plugin.Window.Active(窗口句柄) //激活窗口
Call Plugin.Window.Max(窗口句柄) //最大化
Call Plugin.Window.Min(窗口句柄) //最小化
Call Plugin.Window.Restore(窗口句柄) //还原窗口
Call Plugin.Window.Close(窗口句柄) //关闭窗口
Call Plugin.Window.Show(窗口句柄) //显示窗口
Call Plugin.Window.Hide(窗口句柄) //隐藏窗口
Call Plugin.Window.Top(窗口句柄,0) //置顶或取消置前,0=(置前),1=(取消置前)
Call Plugin.Window.Move(窗口句柄,横坐标,纵坐标) //移动窗口
Call Plugin.Window.Size(窗口句柄,宽度,高度) //改变窗口大小
窗口标题=Plugin.Window.GetText(窗口句柄) //得到标题
Call Plugin.Window.SetText(窗口句柄,"新标题") //设置标题
窗口类名=Plugin.Window.GetClass(窗口句柄) //得到类名
文件路径=Plugin.Window.GetExePath(窗口句柄) //得到程序文件路径
窗口矩形=Plugin.Window.GetWindowRect(窗口句柄) //得到窗口所在屏幕的矩形
客户区矩形=Plugin.Window.GetClientRect(窗口句柄) //得到窗口客户区所在屏幕的矩形
Call Plugin.Window.SetClentSize(窗口句柄,宽度,高度) //改变窗口客户区大小
Call Plugin.Window.SendString(窗口句柄,输入文本) //为指定窗口输入字符串

五、后台
前台操作,就是直接模拟设备向操作系统发送动作,由操作系统报告给窗口,这种方式的一个明显的特点就是他与我们平时操作键盘鼠标几乎一模一样,会对整个系统都产生影响,而且稳定性不佳,因为我们没法确定系统是否将消失投递到我们希望投递到的窗口中。
后台操作是模拟系统直接向目标窗口发送消息,稳定、高效、不影响前台操作。
//键盘模拟
Call Plugin.Bkgnd.KeyPress(Hwnd, 65)
Call Plugin.Bkgnd.KeyDown(Hwnd, 65)
Call Plugin.Bkgnd.KeyUp(Hwnd, 65)
//鼠标模拟
Call Plugin.Bkgnd.LeftClick(Hwnd,10, 10) //坐标
Call Plugin.Bkgnd.RightClick(Hwnd,10, 10)
Call Plugin.Bkgnd.MiddleClick(Hwnd,10, 10)
Call Plugin.Bkgnd.LeftDoubleClick(Hwnd,10, 10)
Call Plugin.Bkgnd.LeftDown(Hwnd, 10, 10)
Call Plugin.Bkgnd.LeftUp(Hwnd,10, 10)
Call Plugin.Bkgnd.RightDown(Hwnd, 10, 10)
Call Plugin.Bkgnd.RightUp(Hwnd, 10, 10)
Call Plugin.Bkgnd.MoveTo(Hwnd, 10, 10)
//找图找色
XY = Plugin.Bkgnd.FindColor(Hwnd, 0, 0, 1024, 768, "0000FF")
GetColor = Plugin.Bkgnd.GetPixelColor(Hwnd, 0, 0) //得到指定点颜色
XY = Plugin.Bkgnd.FindColorEx(Hwnd, 0, 0, 1024, 768, "0000FF", 0, 0.9) //模糊找色
XY = Plugin.Bkgnd.FindCenterColor(Hwnd, 0, 0, 1024, 768, "0000FF") //中心找色
XY = Plugin.Bkgnd.FindPic(Hwnd, 0, 0, 1024, 768, "C:\PIC.bmp", 查找方向, 0.9) //查找方向:0: 从左到右,从上到下1: 从左到右,从下到上2: 从右到左,从上到下 3: 从右到左,从下到上
XY = Plugin.Bkgnd.FindMultiPic(Hwnd, 0, 0, 1024, 768, "C:\pic1.bmp|D:\pic2.bmp", 0, 0.9) //区域找多图
iCoord = Plugin.Bkgnd.FindWordShape(Hwnd,0,0,1024,768,"我的电脑", "宋体", 字号, 查找方向, 1.0) //区域找字
iCoord = Plugin.Bkgnd.FindColorBlock(Hwnd,0,0,1024,768,"0000FF",颜色块宽度, 颜色块高度, 查找方向, 1.0) //区域找色块

六、文件
Call Plugin.File.WriteINI("小节名", "键名", "键值", "C:\Config.ini")
键值 = Plugin.File.ReadINI("小节名", "键名", "C:\Config.ini")
Text = Plugin.File.ReadFileEx("C:\Config.txt") //读出文本内容
Call Plugin.File.WriteFileEx("C:\Config.txt", "内容")
Call Plugin.File.CopyFile("C:\Config.ini", "D:\Config.ini")
Call Plugin.File.DeleteFile("C:\Config.ini")
Call Plugin.File.MoveFile("D:\Config.ini", "C:\Config.ini")
Call Plugin.File.ReNameFile("C:\Config.ini", "C:\Config.txt")
IsFile = Plugin.File.IsFileExist("C:\Config.ini")
Call Plugin.File.CreateFolder("C:\Plugin")
Call Plugin.File.DeleteFolder("C:\Plugin")

七、交互
用户自定义变量 小精灵会显示并可修改
UserVar var1=30 "当HP<多少%时,使用红药" //格式: UserVar {变量}={默认值} {注释}
UserVar var2="内容" "文本"
UserVar va3=DropList{"第一项标题":"第一项值"|"第二项标题":"第二项值"}=默认选项 "注释"
UserVar va4=DropList{"第一项标题":111|"第二项标题":222}=1 "注释"

按键精灵Q语言基础的更多相关文章

  1. GitHub Java项目推荐|不需要 ROOT权限的类似按键精灵的自动操作

    不需要 ROOT 权限的类似按键精灵的自动操作软件,可以实现自动点击.滑动.输入文字.打开应用等.Auto.js 的大部分用户用它来点赞.签到.刷游戏 项目分析 仓库名称:Auto.js 标星(sta ...

  2. [教程] 以本论坛为例,手把手教你使用按键精灵POST登陆网页

    本帖最后由 isaacc 于 2012-2-26 11:08 编辑 整个操作,很无脑.只要你够勤快,你学不会,你来咬我.懒人和伸手党就直接复制代码去玩吧,但我不是叫你拿去干坏事. 准备工具:WPE和I ...

  3. 20165230 学习基础和C语言基础调查

    20165230 学习基础和C语言基础调查 技能学习经验 我擅长弹钢琴.小时候我曾上过很多兴趣班,比如钢琴.跳舞.书法.绘画等等,唯一坚持至今的只有钢琴.仔细一算学习钢琴至今已有12年,不能说已经精通 ...

  4. 学习基础和C语言基础调查

    学习基础和C语言基础调查 一.一种比大多数人(超过90%以上)更好的技能 说句实话,我还没有那种特别特别自信的.说我能拿得出手的.所谓能超过百分之九十以上的人的技能.毕竟人外有人,天外有天. 姑且算上 ...

  5. 学习C语言以及C语言基础调查

    学习声乐的心得 你有什么技能比大多人(超过90%以上)更好?   就我个人而言,在所有的兴趣之中,做得比较好的应该属于声乐. 针对这个技能的获取你有什么成功的经验?   我对于声乐处始于兴趣,成功的经 ...

  6. D10——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2. ...

  7. D09——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D09 20180903内容纲要: 线程.进程 1.paramiko 2.线程.进程初识 3.多线程 (1)线程的调用方式 (2)join (3)线程锁.递归锁. ...

  8. D05——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D05 20180815内容纲要: 1 模块 2 包 3 import的本质 4 内置模块详解 (1)time&datetime (2)datetime ...

  9. C语言基础语法

    #include <stdio.h> int main() { int age; printf("input your age"); scanf("%d&qu ...

随机推荐

  1. JavaWeb学习笔记(十五)—— 使用JDBC进行批处理

    一.什么是批处理 批处理就是一批一批的处理,而不是一个一个的处理! 当你有10条SQL语句要执行时,一次向服务器发送一条SQL语句,这么做效率上很差!处理的方案是使用批处理,即一次向服务器发送多条SQ ...

  2. 对java的理解

    一门编程语言,分三部分. 核心语法,库,数据结构.

  3. Mac os x的发展

    OS X(前称Mac OS X)是苹果公司为麦金塔电脑开发的专属操作系统.Mac OS X于1998年首次推出,并从2002年起随麦金塔电脑发售.它是一套Unix基础的操作系统,包含两个主要的部分:核 ...

  4. 其它浏览器上是可以正常请求的,ie浏览器上确出现奇怪的http请求400错误

    做项目的时候,遇到一个小的问题.一个location.href="请求的url"在其它浏览器上是可以正常请求的.但是在ie浏览器上确出现奇怪的http请求400错误,我们先来对于h ...

  5. 2019年UX设计新趋势

    UX设计总是在不断变化中.最近短短两年的时间里,我们已经看到,很多地方都大规模采用颠覆性技术,比如语音用户界面,混合现实和智能家居设备.设计这些体验的实际过程可能保持不变,但新技术的出现引发了新的行为 ...

  6. Pitfalls of using opencv GpuMat data in CUDA kernel code

    Please note that cv::cuda::GpuMat and cv::Mat using different memory allocation method. cv::cuda::Gp ...

  7. unittest简介

    unittest是python里面的单元测试框架 1 unittest 简介 1).先导入 unittest2).用 help 函数查看源码解析3).查看描述:Python unit testing ...

  8. Java 合并两个有序链表

    编程实现合并两个有序(假定为降序)单链表的函数,输入为两个有序链表的头结点,函数返回合并后新的链表的头节点, 要求:不能另外开辟新的内存存放合并的链表. 递归方式: /* * 递归方式 */ publ ...

  9. Windows下SVN回滚到旧版本(TortoiseSVN)

    当发现新提交的代码有问题,然后想将某个旧的版本作为最新的版本时,可以使用回滚, 操作步骤如下: 1. 签出(CheckOut)最新版本的代码到电脑中(不能做任何修改) 2. 执行TortoiseSVN ...

  10. vue+cordova项目

    教你用Cordova打包Vue项目   现在国内越来越多的开发者使用Vue开发混合app,但是当大家开发完成过后才发现不知道该怎么将Vue项目打包成app.据我现在的了解打包Vue项目目前流行的就是使 ...