自动终止热键集不起作用



非常简单,我正在尝试使用 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 

我想这是因为您正在发送大写字母。这导致移位保持 500 毫秒。在此期间,您必须按移位ESC或设置另一个热键,如下所示:

; 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

相关内容

  • 没有找到相关文章

最新更新