按键精灵q语言连接mysql_【按键精灵8】Q语言介绍

Q语言是什么言是在VBScript的基础上发展起来,专用于按键精灵系列产品(包括但不限于按键精灵、按键小精灵、简单游等)的一种易学易用、功能强大的脚本语言。Q语言以VBScript为基础,去掉了少量不重要的功能,且增加了很多更易于使用,更符合国情的新功能。

Q语言有哪些特点p>

我们希望…

我们希望Q语言成为一门更接近中国人说话的自然语言,那就是“汉语”。让Q语言来学习和适应“人话”,而不是让人去学习“机语”,这是Q语言设计的最高宗旨和终极目标。

因此,Q语言会提供下面的命令:

“按A键10次”

“鼠标移动到坐标100,100”

“打开QQ”

“在屏幕范围内查找颜色为0000ff的点”复制代码

让人享受对电脑发 施令的快感是Q语言的任务,让人不再做电脑的奴隶是Q语言的使命。如果一定要让我们给Q语言加一个特点,那一定就是“人性”。做最人性的计算机语言。

我们不希望…

我们不希望让Q语言看起来像一门编程语言,所以我们坚决不愿意拿一些高级语言的特点来包装自己,譬如面向对象。

我们也不希望让Q语言实现中文编程的伟大目标,已经有人在做而且做的很好,我们鼓励中文编程但不会去模仿。

为什么要用Q语言p>

玩电脑,不要被电脑玩!

Q语言可以让您对电脑发 施令,让电脑去处理那些繁琐、重复的工作。将您解脱出来享受更简单、更健康的电脑生活。请记住,一切让您觉得有些烦的电脑操作都可以找Q语言免费帮忙。

如何使用Q语言p>

您只需要下载支持Q语言的按键精灵8.0版软件,即可采用动作录制+全界面命令操作的方式编写Q语言脚本。按键精灵下载地址:http://bbs.ajjl.cn

Q语言的脚本结构

采用Q语言编写的脚本,其结构比较简单。总体上来说,一个脚本中的所有内容可以分为两大部分,一部分是子程序,一部分是主程序。子程序是指一对Sub…End Sub或Function…End Function组合之间的内容,其他内容都称为主程序。子程序和主程序可以穿插编写,比如下面的脚本是合法的:

Sub x

子程序内容

End Sub

主程序内容

Sub y

子程序内容

End Sub

主程序内容复制代码

但是,子程序不可以嵌套,即子程序中不能再定义子程序,比如下面的脚本是非法的:

Sub x

子程序内容

Sub y

子程序内容

End Sub

子程序内容

End Sub复制代码

脚本在执行的时候,总是从第一条语句开始,当遇到子程序时,将自动跳过,只有遇到主程序的语句时,才会继续执行。当然,子程序可以被主程序或其他子程序调用,这点和一般的VBScript没有区别。

脚本在执行完最后一条语句,或者执行到EndScript语句,或者遇到如用户按下中止热键等外部事件时,将停止执行。

脚本中任何以‘或者//开头,至行尾为止的内容,都被看作是注释,在执行过程中会被忽略。

Q语言的语法分类

采用Q语言编写的脚本,语法遵循两套不同的规则,一类是在VBSBegin…VBSEnd之间包含的内容,称之为VBS语法规则;另一类则是在VBSBegin…VBSEnd之外的内容,称之为Q语法规则。VBS或Q语法规则与上文所述的主程序和子程序并无任何因果关系,换言之,无论是主程序还是子程序,都既可以使用VBS语法,也可以使用Q语法。

VBS语法规则与微软设定的VBScript语法完全相同,它不支持诸如Goto等在VBScript中并不包含的语法,也不支持Import、UserVar、BeginThread等按键精灵特有的功能,但由于采用VBS语法规则的脚本具有较高的执行速度,并且也支持基本的按键精灵功能如KeyPress、MoveTo等,因此仍具有较大的实用价值。

当然,Q语法在按键精灵中应用更为广泛,因为按键精灵的几乎所有功能都是由Q语法承载的,因此具有强大的脚本编写能力。下文介绍的各项语法特性,如无特别说明,都是指Q语法规则。

变量

和VBScript类似,Q语言支持变量定义(包括数组),且所有的变量都只有一种类型,即Variant型(变体类型)。

Q语言中定义变量的方法有三种,一种是采用Dim语句定义,如Dim a,b,c;第二种是采用UserVar语句定义,UserVar语句的用法后文详述;第三种是采用DimEnv语句定义,如DimEnv a,b,c。变量也可以不定义而直接使用(类似于VBScript),但在定义变量时,VBScript中的Private和Public关键字并不起作用。

变量的类型和作用域:

变量的类型分三种:局部变量、全局变量和环境变量,所有在子程序中用Dim定义的变量(包括子程序的参数)都是局部变量,所有在主程序中用Dim或UserVar定义的变量,或者没有定义而直接使用的变量都是全局变量,所有用DimEnv语句定义的变量都是环境变量。

局部变量和全局变量的含义VBScript类似:局部变量只在子程序中有效,退出子程序时将被清除;环境变量在整个脚本中都有效。环境变量是Q语言特有的,它在某个产品所运行的所有脚本中都具有相同的值。环境变量初始化之后就一直保留。

变量作用域的定义举例:

UserVar var=”1″ 自定义变量

Dim x1

x2 = 2

DimEnv ENV_VAR

Sub Test

Dim y

z = 3

Return复制代码

var是全局变量:因为用Uservar定义的都是全局变量

x1,x2是全局变量:因为在主程序中定义的变量都是全局变量,不管是否用了DIM关键字

ENV_VAR是环境变量:环境变量可以在多个脚本线程或者多个脚本之间共享

y是局部变量:因为在子程序中使用DIM语句定义,只在子程序中有效

z是全局变量:在子程序中没有用DIM进行定义的变量都是全局变量。

变量的命名规则:

变量和常量,以及子程序的名称,还有后文将提到的Goto语句使用的标 ,都具有完全相同的命令规则:可以采用英文大小写字母或汉字开头,后面可以使用英文大小写字母或汉字或阿拉伯数字。如下面的变量定义是合法的:

Dim Hello

Dim 你好

Dim Hi12345复制代码

但下面的变量定义不合法,因为变量命名不正确:

Dim 12345Hi

Dim

He===llo复制代码

Q语言中关于数组的使用和规定与VBScript完全相同。

变量功能和01版的主要区别:

在01版的子程序中使用Dim定义的变量也是脚本级的,这样的话由01版自动转换为09版的脚本运行结果就可能不同。

例子脚本:

Gosub test

MessageBox x

Sub test

dim x

x = 2

Return复制代码

转换方法:如果在SUB里用DIM定义了一个变量,我们直接将DIM这一行删掉,变量就自动变为全局的。但要考虑DIM前后有其他语句的情况。

常数和运算符

Q语言中关于常数、运算符的使用和规定都与VBScript完全相同。除了可以用Const定义常数之外,Q语言与VBScript一样,都已经预定义了一系列的常数,如vbCr、vbCrLf等。

和VBScript一致,Q语言中也包括下列运算符:

算术运算符比较运算符逻辑运算符

描述符 描述符 描述符

求幂^等于=逻辑非Not

负 -不等于逻辑与And

乘*小于

除/大于>逻辑异或Xor

整除小于等于

求余Mod大于等于>=逻辑隐含Imp

加+对象引用比较Is

减-

字符串连接&

语句和VBScript一致,在Q语言中支持下列语句。

Dim/ReDim

EraseCallSetRandomizeConstExit Do/For/Sub/Function

Do While/Until … Loop

Do … Loop While/Until

While…Wend

For…Next

If/IfColor…Then…ElseIf…Then…Else…End IfSelect Case…Case…Case Else…End Select

上述语句的用法与VBScript中完全一样,但也允许存在下列的变化:

1)Call语句

与VBScript中的调用规则完全相同:当调用采用Sub…End Sub定义的子程序时,只需过程名及所有参数值,参数值之间使用逗 分隔。不需使用Call语句,但如果使用了此语句,则必须将所有参数包含在括 之中;反之,当不使用Call语句进行调用时,括 被省略。

当调用的子程序没有参数也没有返回值时,可以将Call Process ( )简写为Gosub Process。这种简写只是为了保持兼容性而保留,今后不推荐使用。

2)While…Wend语句与VBScript中的使用方法完全相同,但Wend可以用EndWhile代替。我们推荐用Wend,目前EndWhile只是为了保持兼容性而保留。

3)For…Next

支持下面两种在VBScript中的用法(斜体表示这里是一个变量或者表达式,方括 表示可选内容):

For counter = start To end [Step step] … Next

For Each element In group… Next

还支持下面的用法:

For count… Next

第三种用法是Q语言中特有的,具体用法和7.x版本之前的按键精灵一致。在这种用法中,Next可以用EndFor代替。我们推荐用Next,目前EndFor只是为了保持兼容性而保留。

4)If/IfColor…Then…ElseIf…Then…Else…End If

主要支持以下两种用法

If…Then…[ElseIf…Then…] [Else…] End If

IfColor…Then…[ElseIf…Then…] [Else…] End If

其中第一种用法和VBScript中的条件分支用法完全一致。第二种用法则是Q语言中特有的,可以看作是专用于判断颜色的特例。

无论上述哪种用法,都可以省略Then,也可以用EndIf代替End If。当然,我们仍然推荐与VBScript尽量保持一致,即保留Then,并用End If。之所以仍然支持EndIf并允许省略Then,都是为了保持兼容性。

下面的语句是VBScript中所没有的,属于Q语言中特有的内容。

1)DimEnv

格式:DimEnv var1[, var2, var3 …]

含义:定义环境变量,同名的变量将在同一产品(按键精灵/按键小精灵/简单游)的所有脚本中共享。

备注:var1, var2可以是任何符合变量命名规则的变量名,建议在命名是加上env_前缀,表示这是个环境变量,和其他变量进行区分。例如env_xue。

兼容性说明:DimEnv定义的变量就是以前多线程中使用的SetEnv和GetEnv定义的变量。

2)UserVar

格式:

UserVar var[=default] description

UserVar var = DropList{text1 : value1 | text2 : value2 …} [=default] description

含义:定义可由用户设置的变量,具体含义和按键精灵7.x之前类似,不再赘述。

备注:

var可以是任何符合变量命名规则的变量名。

description,text1,text2…通常是固定字符串,因此必须用双引 。如UserVar变量=1 “设置内容”

default, value1, value2通常是固定的字符串或者数值,当使用字符串时,也必须用双引 。

兼容性说明:

这个命令在按键7的基础上做了优化。如果用户加上双引 ,那么强制当作字符串使用,解决首字符为0时会自动判断为数字的问题。

3)Rem

格式:Rem label

含义:定义标 label,作为Goto语句的目标地址。具体含义和按键精灵7.x之前类似,不再赘述。

备注:label即标 可以是任何符合变量命名规则的名称。

根据变量命名规则(如前文所述),

如Rem标 是合法的

但Rem 0000是不合法的,因为首字符不能是数字

且Rem –标 –也是不合法的,因为只支持英文字母、数字和汉字,不支持其他符 。

因为REM、变量和SUB的命名采用同一套规则,因此我们将调整为统一支持[]_这3个符 。但这3个符 的支持仅作兼容,不做推荐。

4)Goto

格式:Goto label

含义:跳转到标 label。具体含义和按键精灵7.x之前类似,不再赘述。

备注:Goto后面的label必须用Rem语句定义过,且必须都定义在主程序中,或者都定义在同一个子程序中。

5)Import格式:Import filename

含义:导入插件或脚本库,filename表示插件文件名。如果已经采用Import语句导入了插件,则以后插件的调用都可以简写为:Call插件名称.功能名称(参数列表)

否则,如果没有提前用Import语句导入,则必须在调用时增加Plugin.前缀,写为:

Call Plugin.插件名称.功能名称(参数列表)

注意这里对插件的使用方法与7.x版本相比有所区别,脚本库lib的使用方法和插件一致。

备注:filename即插件文件名通常是固定的字符串,因此必须用双引 。

6)EndScript

格式:EndScript

含义:和按键精灵7.x之前类似,脚本执行到这里即无条件停止。

7)BeginThread

格式:BeginThread subname

含义:启动一个线程,subname是一个脚本中已经定义的子程序的名字,具体含义和按键精灵7.x之前类似。

备注:由于subname是一个子程序的名字,因此不能加双引 (注意这里和按键精灵7.x之前有所区别),且subname的命名符合前文所述的变量命名规则。

8)VBSBegin…VBSEnd

格式:

VBSBegin

VBSEnd复制代码

含义:在VBSBegin…VBSEnd中的内容只遵循VBScript语法,而不支持Q语言语法,也就是说,不能使用Q语言语法中特有的语句(但支持基本的按键精灵功能如KeyPress、MoveTo等)。VBScript语法的优势是执行速度比较快,可以在对速度有特别要求的场合使用。

子程序和VBScript类似,Q语言支持Sub和Function这两种子程序,两者的区别在于后者有返回值而前者没有。Sub子程序由关键字Sub…End Sub以及中间的多行语句构成,Function由关键字Function…End Function以及中间的多行语句构成。

在Function子程序中,允许通过给与Function子程序同名的隐含变量赋值而设置返回值。当Sub或Function被调用时,通常当其中的语句执行完以后会自动返回调用处,同时,也允许在Sub或者Function子程序中分别使用Exit Sub / Exit Function,从而在子程序执行未结束时也能跳出子程序。

Sub或者Function子程序都可以使用参数,参数由括 内的一组变量名组成,也就是说,参数的命名规则同变量命名规则一致,允许使用英文字母和中文,以及后续的数字。对于子程序的参数,Q语言和VBScript最大的区别在于,Q语言只支持传值,不支持传引用,因此也不支持参数的ByVal或ByRef等附件说明,而VBScript则可以通过在参数前面增加ByVal或ByRef的附加说明来选择传值还是传引用。Q语言不支持传引用由于技术原因造成的,今后会试图增加这项功能。

总的来说,对于子程序的支持,Q语言和VBScript有以下几点不同:

1)

Q语言不支持参数传引用,仅支持参数传值,而VBScript两者都支持。

2)VBScript的子程序(包括Sub和Function)没有参数时,仍然必须写一对括 ,而Q语言允许没有括 。当然,这种写法主要是为了兼容性的考虑,今后我们还是推荐有括 的写法。

如Sub name的写法,在Q语言中允许,但在VBScript中不允许。但是,我们仍然推荐增加括 的写法,即Sub name()

3)

在Q语言中,End Sub可以用Return代替。这种写法也是为了兼容性的考虑,今后我们将推荐使用比较正规的End Sub

按键精灵提供了一系列以鼠标键盘模拟为代表的基本功能,所有这些功能都以预定义的子程序的形式出现。目前包括:

KeyPress、KeyDown、KeyUp、LeftClick、RightClick、MiddleClick、LeftDoubleClick、LeftDown、LeftUp、RightDown、RightUp、MoveTo、MoveR、MouseWheel、KeyPressH、KeyDownH、KeyUpH、LeftClickH、RightClickH、MiddleClickH、LeftDoubleClickH、LeftDownH、LeftUpH、RightDownH、RightUpH、MoveToH、MoveRH、KeyPressS、KeyDownS、KeyUpS、LeftClickS、RightClickS、MiddleClickS、LeftDoubleClickS、LeftDownS、LeftUpS、RightDownS、RightUpS、MoveToS、MoveRS、SetSimMode、SaveMousePos、RestoreMousePos、LockMouse、UnlockMouse、WaitKey、GetLastKey、WaitClick、GetLastClick、Delay,MessageBox,Beep,SayString、PutAttachment、TracePrint、RunApp、GetCursorPos、GetPixelColor、FindColor、FindCenterColor、FindColorEx、ReadMemory、FindPic、FindPicEx、GetCursorShape

所有这些功能的用法都与按键精灵7.x中基本保持一致,个别用法与按键精灵7.x相比有所调整,如WaitKey、GetLastKey、WaitClick、GetLastClick等等,具体的调整细节由其他文档详述。

由于所有这些功能都是以预定义的子程序的形式出现的,因此,调用这些功能的格式与调用子程序完全一致,如:

MoveTo 100, 100

key = WaitKey()复制代码

并且,所有这些功能都可以用于VBSBegin…VBSEnd之间包括的符合VBS语法规则的脚本中,当然,用于QMS语法规则的脚本就更加没有问题了。

插件除了上述基本功能外,还有很多扩展功能以插件的形式提供,按键精灵系列产品也有丰富的第三方插件,并且支持用户自己编写插件。如前文所述,插件功能的调用有两种形式:

1)首先采用Import语句导入插件,然后用下面的格式调用:

Call插件名称.功能名称(参数列表)

如下面的脚本可以把当前窗口最大化:

Import “window.dll”

hWnd =Window.Foreground()

Call Window.Max(hWnd)

Window.Max hWnd复制代码

2)不做任何准备工作,直接用下面的格式调用:

Call Plugin.插件名称.功能名称(参数列表)

如下面的脚本可以把当前窗口最大化:

hWnd = Plugin.Window.Foreground()

Call Plugin.Window.Max(hWnd)

Plugin.Window.Max hWnd复制代码

上面两种插件调用方法都只能用于VBSBegin…VBSEnd之外,即符合QMS语法规则的脚本中。如果要用于VBSBegin…VBSEnd之内,即符合VBS语法规则的脚本中,只有先在VBSBegin…VBSEnd之外预先用Import语句导入插件,然后再用前面所述的第一种方法,在VBSBegin…VBSEnd之内调用各项插件功能。

命令库

命令库是按键精灵8新引入的一个功能,可以将常用的脚本子程序放在命令库当中,供多个脚本调用。命令库的存放地址在按键精灵目录下的lib目录里,以.qml为后缀。调用命令库的方法如下:

Call lib.命令库名称.功能名称(参数列表)

例如:

Call lib.测试库.FuncA(100,200)复制代码

相关资源:MinionProfitsTracker:随着市场价格波动,轻松识别最赚钱的奴才[在…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月1日
下一篇 2021年1月1日

相关推荐