已掌握基础命令?本教程深入 If/ElseIf 条件判断、For/While 循环控制、Function 函数封装和错误处理(On Error Goto),附带可运行的完整脚本示例。
如果您还不会基础操作,建议先看 零基础按键精灵脚本编写速成教程。
条件判断让脚本能够"做选择"。基本语法:If 条件 Then ... ElseIf 条件 Then ... Else ... End If。
示例 — 根据窗口是否存在选择不同操作:
If Plugin.Window.Find("记事本") <> 0 Then
TracePrint "记事本已打开,直接激活窗口"
Call Plugin.Window.Active(Plugin.Window.Find("记事本"))
Else
TracePrint "记事本未打开,正在启动..."
RunApp "notepad.exe"
Delay 2000 // 等待程序启动
End If
For 循环(已知循环次数时使用):
// 重复点击 10 次
For i = 1 To 10
MoveTo 500, 400
Delay 100
LeftClick 1
Delay 500
TracePrint "第 " & i & " 次点击完成"
Next
While 循环(条件控制,条件为真时持续执行):
// 等待指定颜色出现
Dim found : found = 0
While found = 0
Dim x, y
FindColor 0, 0, 1920, 1080, "FFFFFF", x, y
If x > 0 Then
found = 1 // 找到了,退出循环
TracePrint "找到目标颜色在 " & x & ", " & y
End If
Delay 500
Wend
Do While 循环(至少执行一次):
// 不断按 Enter 直到窗口出现
Do
KeyPress "Enter", 1
Delay 1000
Loop While Plugin.Window.Find("目标窗口") = 0
当一段代码需要重复使用时,封装为函数。语法:Function 函数名(参数列表) ... End Function。
示例 — 封装一个"移动到指定位置并点击"的操作:
Function ClickAt(x, y, delayBefore, delayAfter)
// 移动到目标位置
MoveTo x, y
Delay delayBefore
// 单击
LeftClick 1
Delay delayAfter
End Function
// 调用:在 (500,400) 和 (600,500) 各点一次
Call ClickAt(500, 400, 200, 300)
Call ClickAt(600, 500, 200, 300)
进阶 — 带返回值的函数:
Function Add(a, b)
Add = a + b // 函数名 = 返回值
End Function
Dim result
result = Add(10, 20)
TracePrint "10 + 20 = " & result // 输出: 10 + 20 = 30
在脚本开头添加错误处理,让脚本在出错时优雅退出而不是直接崩溃:
On Error Goto ErrHandler
// ---------- 主代码 ----------
Dim x, y
FindColor 0, 0, 1920, 1080, "FFFFFF", x, y
If x > 0 Then
MoveTo x, y
LeftClick 1
TracePrint "操作完成"
Else
TracePrint "未找到目标颜色"
End If
// ------------------------------
ExitScript // 正常结束,不进入错误处理
Rem ErrHandler
// 错误处理区
TracePrint "脚本出错!错误信息: " & Err.Description
TracePrint "出错行号: " & Err.Number
MessageBox "脚本运行出错,请截图此弹窗联系作者"
⚠️ 注意:使用 On Error Goto 后,必须在主代码末尾加 ExitScript,否则正常执行完也会跳进错误处理区。
使用 If 条件 Then 语句。条件可以是变量比较(如 If a > 10 Then)、函数返回值(如 If FindColor(x,y,"000000") = 1 Then)或逻辑组合(如 If a > 10 And b < 5 Then)。
用 For i = 1 To N ... Next 实现固定次数循环;用 While 条件 ... Wend 实现条件循环(条件为真时持续执行);用 Do ... Loop While 条件 实现至少执行一次的循环。
在 Function 语句中声明参数名:Function MyFunc(a, b),调用时传值:Call MyFunc(10, "hello")。参数默认是值传递(ByVal),使用 ByRef 关键字可实现引用传递。