变量是按键精灵脚本中存储和处理数据的基本单元,掌握变量的使用是编写自动化脚本的基础。本教程将带你从零开始学习按键精灵变量的定义、使用和常见操作。
一、什么是变量?
变量是在编程中用来存储数据的“容器”。它具有一个名字(即标识符),用于保存、读取和修改数据。在程序运行过程中,变量的值可以随时发生变化。
按键精灵中的变量属于弱类型:一个变量在使用过程中可以随时改变其数据类型,定义时不需要显式指定类型。
变量的命名需遵循标识符的命名规则。
定义变量
在按键精灵中,使用变量前必须先通过 Dim 语句进行定
Dim name
name = 18
你也可以一次定义多个变量,使用逗号 , 分隔:
Dim name, age, temp
在同一个作用域中,同名变量不能重复定义:
Dim name
name = 16
TracePrint name
Dim name ' 再次定义同名变量会报错
变量赋值
定义后赋值
通过等号 = 对变量赋值:
Dim word
word = "Hello World"
TracePrint word
' 可以随时修改变量的值
word = 9527
TracePrint word
定义的同时赋值
Dim name = "Alice"
TracePrint name
同时定义并赋值多个变量
Dim name = "Alice", age = 18
变量作用域
变量的作用域表示该变量在程序中的有效范围。
局部变量(Local Variable)
在函数内部定义;只在该函数内部有效。
全局变量(Global Variable)
在函数外部定义;整个脚本中有效(不包括多线程环境和悬浮窗按钮事件中)。
Dim globalVar = 1
TracePrint globalVar
Function Foo()
Dim funcVar = 2
TracePrint globalVar ' 全局变量在函数中仍然有效
TracePrint funcVar ' 局部变量在函数中有效
End Function
Foo()
⚠️ 注意:如果局部变量与全局变量同名,函数内部会优先使用局部变量。
特殊作用域:多线程与悬浮窗事件
多线程变量
在多线程环境中,无论是全局变量还是局部变量,都不能直接共享。必须通过 Thread.SetShareVar 和 Thread.GetShareVar 进行传递:
Dim threadVar
Thread.SetShareVar("threadVar", 1)
Function ThreadFunc()
Dim localVar = Thread.GetShareVar("threadVar") ' 必须使用共享变量机制
TracePrint localVar
End Function
ThreadFunc()
悬浮窗(FW)事件变量
在悬浮窗控件的事件函数(如 SetOnClick 这类以 SetOn 开头的事件)中,无法访问外部变量,只能使用事件函数内部的局部变量。