按键精灵Android版:MQ语言MQ是按键精灵针对旗下移动产品而设计的全新脚本开发语言。语言支持全中文阅读脚本,上手简单,易学易用。MQ语言的基本特性如下:1数据类型在MQ语言里,数据类型包括如下5种:Null:不包含任何有效数据;Boolean:仅包含True和False两个常数;Integer:32位有符号整数,范围为-2,147,483,648到2,147,483,647之间;Float:双精度浮点数,负数范围从-1.79769313486232E308到-4.94065645841247E-324,正数范围从4.94065645841247E-324到1.79769313486232E308;String:字符串。MQ语言为动态类型,即定义变量时并不指定类型,在给变量赋值时才确定类型,并且类型随时可以通过赋值操作而变化。常量MQ语言中,用户可直接在脚本内写入没有命名的常量的,具体类型与写法如下:整数型:可直接输出整数数字,如100;亦可加&H前缀,表明该常量为16进制数字,如&H64。浮点型:可直接输出小数点数字,如3.1415;亦可采用E分隔整数和底数部分,如314.15e-2。字符串型:凡采用一对双引号包含的内容均被视为字符串型常量。其中允许使用转义字符包括有:'\b'(退格),'\f'(表单),'\n'(换行),'\r'(回车),'\t'(横向制表),'\v'(纵向制表),'\\'(反斜杠),'\'(双引号),以及'\''(单引号)。另外也支持反斜杠加数字来描述一个字符。(注意,如果需要在这种描述方法后接一个是数字的字符,那么反斜杠后必须写满三个数字)。MQ语言中有一下已经预先定义好的常量,目标包括True和False(不区分大小写),今后还会增加。变量MQ语言的命名方式如下:变量名不区分大小写,同时关键字(如If、Dim)与子程序的名字也无须区分大小写。变量名、关键字及子程序的命名同时支持中文及英文,除了第一个字母外,后续内容还可以用数字。变量在使用前必须用Dim语句定义,但Dim语句不必指定类型。声明多个变量时,使用逗号分隔变量。例如:DimTop,Bottom,Left,Right,上,下,左2,右1。变量的作用域由声明它的位置决定。如果在子程序中声明变量,则只有该子程序中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为局部变量。如果在子程序之外声明变量,则该变量可以被当前脚本的所有子程序所识别,称为全局变量。变量还可以定义为数组的形式,数组可以是一维的,也可以是多维的,数组的每个维度的索引都是从0开始的正整数,当定义一维数组时,可以指定数组的初始元素个数,也可以不指定。如:DimArray()DimArray(10)上述例子都可以定义一个一维数组。但即使指定了数组的初始元素个数,以后也可以随时增加新的元素(直接访问新的元素即可)。当定义多维数组的时候,则必须指定数组在每个维度的初始元素个数,各个维度的初始元素个数之间用逗号分隔,如:DimTwoDemensionArray(2,2)目前,多维数组暂时不支持增加新的元素,也不支持ReDim语句,待以后再支持。运算符变量和常量之间采用运算符连接后,称为表达式。MQ语言支持的运算符包括:运算符含义+加法运算-二元运算符:加法一元运算符:负号*乘法运算/除法运算Mod整除取余^取幂&字符串连接=赋值例如:当一个语句为X=Y时等于(当用于表达式内部时)不等于大于小于=大于等于=小于等于Not逻辑非And逻辑与Or逻辑或基本语句MQ的基本语句如下:注意!以下标红为按键精灵(安卓版)新增的相关命令语句,包含部分有改动的语句名称格式解释IfIf表达式Then…ElseIf表达式Then判断表达式并执行语句--通过判断表达式的取值,来执行后面的动作或控制。…Else…EndIfElseIf表达式Then…ElseIf表达式Then…Else…EndIf和If语句结合,进行条件判断。ElseIfIf表达式Then…ElseIf表达式Then…和If语句结合,进行条件判断。ElseIf表达式Then…Else…EndIfThenIf表达式Then和If、ElseIf语句结合,进行条件判断。WhileWhile循环条件…Wend循环语句--当循环条件成立的时候,反复执行循环体。WendWhile循环条件…Wend和While一起构成循环语句。ForFor循环次数或For变量=起始数值To终止数值或For变量=起始数值To循环语句。可以循环一定次数,也可以按照变量的起始数值到终止数值循环(如果不指定步长数值,默认步长为1),也可以循环取得数组中的所有值。终止数值Step步长数值或ForEach变量In数组...NextNextNext和For一起构成循环语句。SelectSelectCase表达式Case情况1…Case情况2…CaseElse…EndSelect根据情况选择条件判断。CaseSelectCase表达式Case情况1根据情况选择条件判断。…Case情况2…CaseElse…EndSelectDoDoWhile表达式…Loop或者DoUntil表达式…Loop条件循环LoopDoWhile表达式…Loop条件循环或者DoUntil表达式…LoopUntilDoUntil表达式…Loop条件循环SubSub过程名(参数1,参数2,...)…EndSub定义一个过程,可以在脚本中调用这个过程。FunctionFunction函数过程名(参数1,参数2,...)…EndFunction定义一个函数过程,可以在脚本中调用这个函数。CallCall函数或者过程名(参数1,参数2,...)调用函数或者过程。可以简写为函数或者过程名参数1,参数2,...(省略Call关键字,并且无括号)EndIfEndIf用于配对结束If条件判断。EndSelectEndSelect用于配对结束SelectCase选择情况判断。EndSub[EndSub用于配对结束Sub子程序过程。EndFunctionEndFunction用于配对结束Function函数过程。ExitDoExitDo用于配对退出Do循环。ExitForExitFor用于配对退出For循环。ExitSubExitSub用于配对退出Sub子程序过程。ExitFunctionExitFunction用于配对退出Function函数过程。EndScriptEndScript强制结束脚本的执行。DimDim变量1,变量2...定义一个或多个变量。内置命令MQ语言中已经包含了下列名称的子程序(也称为内置命令),在脚本中可以随时调用。名称格式解释AbsAbs(数值表达式)返回数值的绝对值,绝对值是其无符号的数值大小。例如,Abs(-1)和Abs(1)都返回1。AscAsc(字符串表达式)返回与字符串的第一个字母对应的字符ASCII码。AtnAtn(数值表达式)返回数值的反正切值。即计算直角三角形两个边的比值(number)并返回对应角的弧度值。此比值是该角对边的长度与邻边长度之比。结果的范围是从-pi/2到pi/2弧度。将角度乘以pi/180即可转换为弧度,将弧度乘以180/pi即可转换为角度。CBoolCBool(表达式)试图把表达式转换为Bool类型并返回此Bool值。CDblCDbl(表达式)试图把表达式转换为数值类型并返回此数值。ChrChr(数值表达式)返回与指定的ASCII字符代码相对应的字符。CIntCInt(表达式)试图把表达式转换为数值类型,并返回此数值经过四舍五入的结果。CLngCLng(表达式)试图把表达式转换为数值类型,并返回此数值经过四舍五入的结果。SinSin(数值表达式)返回将某个角表示为弧度数值的正弦值。即取某个角并返回直角三角形两边的比值。此比值是直角三角形中该角的对边长度与斜边长度之比。结果范围在-1到1之间。将角度乘以pi/180即可转换为弧度,将弧度乘以180/pi即可转换为角度。CosCos(数值表达式)返回将某个角表示为弧度数值的余弦值。即取某个角并返回直角三角形两边的比值。此比值是直角三角形中该角的邻边长度与斜边长度之比。结果范围在-1到1之间。将角度乘以pi/180即可转换为弧度,将弧度乘以180/pi即可转换为角度。CSngCSng(表达式)试图把表达式转换为数值类型并返回此数值。CStrCStr(表达式)试图把表达式转换为字符串类型并返回此字符串。DateDate(时间表达式)返回当前系统日期。格式为年/月/日,如2013年10月1日表示为2013/10/01。ExpExp(数值表达式)返回e(自然对数的底)的幂次方。常数e约为2.718282。FixFix(数值表达式)返回指定数值的整数部分。如果指定的数值为负数时,Fix会返回大于或等于该数值的第一个负整数。例如,Fix将-8.4转换为-8。HexHex(数值表达式)返回表示十六进制数值的字符串。当指定的数值表达式包含小数位时,会先采用四舍五入的方式去掉小数位再转换。InStrInStr(起始位置,字符串1,字符串2)返回字符串2在字符串1中第一次出现的位置,从字符串1的某个指定起始位置开始搜索。起始位置为数值表达式,用于设置每次搜索的开始位置,设为0表示从头开始搜索。InStrRevInStrRev(字符串1,字符串2,起始位置)返回字符串2在字符串1中出现的从结尾计起的位置。从字符串1的某个指定起始位置开始逆向搜索。起始位置为数值表达式,用于设置每次搜索的开始位置,设为-1,表示从最后一个字符的位置开始搜索。IntInt(数值表达式)返回指定数值的整数部分。如果指定的数值为负数时,Int会返回小于或等于该数值的第一个负整数。IsArrayIsArray(变量)返回Bool值指明某变量是否为数组。如果变量是数组,IsArray返回True;否则,返回False。IsNullIsNull(变量)返回Bool值,指明某变量是否不包含任何有效数据(Null)。未初始化的变量通常都不包含任何有效数据。IsNumericIsNumeric(变量)返回Bool值,指明某变量是否为数值类型。如果变量是数值类型,IsNumeric返回True;否则,返回False。JoinJoin(字符串数组)返回一个字符串,此字符串由包含在数组中的多个子字符串联接创建,各个子字符串之间采用分隔符隔开。分隔符是字符串类型,可以是空字符串KeepScreenKeepScreen(Bool类型表达式)当指定的Bool类型表达式为True的时候,保持屏幕常开状态;否则,关闭屏幕常开功能(屏幕会自动关闭)。LCaseLCase(字符串表达式)返回字符串的小写形式。仅大写字母转换成小写字母;所有小写字母和非字母字符保持不变。LeftLeft(字符串,长度)返回指定数目的从字符串的左边算起的字符。指定的长度为数值表达式,指明要返回的字符数目。如果是0,返回空字符串;如果大于或等于字符串中的字符总数,则返回整个字符串。LenLen(字符串表达式)返回字符串内字符的数目。LogLog(数字表达式)返回数值的自然对数,即以常数e为底的对数。常数e的值约为2.718282。LTrimLTrim(字符串表达式)返回不带前导空格的字符串。MidMid(字符串,起始位置,长度)从字符串中返回指定数目的字符。起始位置和长度都是数值类型的表达式。NowNow根据计算机系统设定的日期和时间,返回当前的日期和时间值组成的字符串。OctOct(数值表达式)返回表示八进制数值的字符串。当指定的数值表达式包含小数位时,会先采用四舍五入的方式去掉小数位再转换。PutAttachmentPutAttachment(路径,要释放的文件)PutAttachment路径把当前脚本包含的附件释放到指定的目录下。路径是字符串类型,表示把附件文件释放到某个特定的目录下。如果路径为Null或空字符串,会把附件释放到按键精灵的临时文件目录下。临时文件目录可以通过调用GetTempDi