跳到主要内容

WaitKey 等待按任意键

🎯功能

等待键盘按键后获取该按键码

📜语法

结果 = WaitKey()

📥参数

📤返回

整数型, 返回用户按下的按键码

💡示例

Key = WaitKey() 
//脚本运行到这一行会暂停,当用户按下键盘后继续执行,并且把用户的按键码保存在变量Key里
If Key = 13 Then
MessageBox "你按下了回车键"
Else
MessageBox "你按下的按键码是" & Key
End If
//高级例子
//介绍: 判断是否按下了组合键, 这是阻塞子程序
//组合键: 组合键的键码, 以+号隔开, 仅支持键码, 不支持键名, 如果要键名请自行修改代码
//超时时间: 0表示无限等待直到按下指定组合键, 其他数值表示限时内按下组合键
//返回值: 数值型, 返回0表示超时, 返回1表示按下了组合键
//Declare是声明api的语句, 放在脚本开头即可
Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
Function zmWaitGroup(组合键, 超时时间)
Dim keys, i, counts, t1
zmWaitGroup = 0
keys = Split(组合键, "+")
t1 = Plugin.Sys.GetTime()
Do
counts = 0
For i = 0 To UBound(keys) - 1
If GetAsyncKeyState(CInt(keys(i))) <> 0 Then
counts = counts + 1
End If
Next
If GetLastKey() = CInt(keys(i)) Then
counts = counts + 1
End If
If counts = UBound(keys) + 1 Then
zmWaitGroup = 1
Exit Do
End If
Delay 10
Loop While 超时时间 = 0 or 超时时间 > (Plugin.Sys.GetTime() - t1)
End Function

//示例: 等待3秒内按下组合键Ctrl+A
Dim 结果
结果 = zmWaitGroup("17+65", 3000)
If 结果 = 1 Then
TracePrint "你在3秒内按下了ctrl+a"
Else
TracePrint "你已超时"
End If

📘备注

  • 请务必注意, 本代码属于阻塞命令, 在用户按下键盘上任意按键之前, 会一直停留在本命令, 不会往下执行其他代码.
  • 如果你不想阻塞脚本, 需要直接获取最近一次的按键码, 可以使用 getlastkey