非常简单,我正在尝试使用ESC键终止脚本,并且在运行Path()时它不会终止。我已经尝试将HotKeySet定义放在Path()函数中,但仍然无法正常工作。我是AutoIt的新手。
; Press Esc to terminate script, Pause/Break to "pause"
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
; Start Pathing
MsgBox(0,"Starting...","Will Start 2 seconds after you close this.")
Sleep(2000)
Path()
Func Path()
Opt("SendKeyDownDelay", 500)
$pathing = True
$i = 0
$j = 5 ; Only here to prevent an infinite loop because HotKeySet won't terminate on ESC
While $i < $j
Send("{A}")
Send("{S}")
Send("{W}")
Send("{D}")
$i = $i + 1
WEnd
EndFunc
Func CheckForBattle()
Return True
EndFunc
Func TogglePause()
$Paused = Not $Paused
While $Paused
Sleep(100)
ToolTip('Script is "Paused"', 0, 0)
WEnd
ToolTip("")
EndFunc
Func Terminate()
Exit 0
EndFunc
Func ShowMessage()
MsgBox(4096, "", "This is a message.")
EndFunc
答案 0 :(得分:2)
我想这是因为你要发送大写字母。这导致换档保持500ms。您必须在此期间按Shift键或设置另一个热键,如下所示:
; Press Esc to terminate script, Pause/Break to "pause"
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+{ESC}", "Terminate")
; Start Pathing
MsgBox(0, "Starting...", "Will Start 2 seconds after you close this.")
Sleep(2000)
Path()
Func Path()
Opt("SendKeyDownDelay", 500)
$pathing = True
$i = 0
$j = 5 ; Only here to prevent an infinite loop because HotKeySet won't terminate on ESC
While $i < $j
Send("A")
Send("S")
Send("W")
Send("D")
$i = $i + 1
WEnd
EndFunc ;==>Path
Func CheckForBattle()
Return True
EndFunc ;==>CheckForBattle
Func TogglePause()
$Paused = Not $Paused
While $Paused
Sleep(100)
ToolTip('Script is "Paused"', 0, 0)
WEnd
ToolTip("")
EndFunc ;==>TogglePause
Func Terminate()
Exit 0
EndFunc ;==>Terminate
Func ShowMessage()
MsgBox(4096, "", "This is a message.")
EndFunc ;==>ShowMessage