#autoit
#автоматический запуск
Вопрос:
Какую функцию я могу использовать для приостановки сценария в AutoIt?
Я знаю, что могу использовать sleep следующим образом:
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('Script is "Paused"',0,0)
WEnd
ToolTip("")
EndFunc
Но есть ли функция для приостановки, которая была реализована в AutoIt?
Комментарии:
1. Я не понимаю, чего вы ожидаете от встроенной функции паузы. В AutoIt функция ожидания — это функция паузы, которая работает в течение заданного промежутка времени. В цикле это работает вечно. Что еще должна делать функция паузы?
Ответ №1:
Я всегда использовал горячую клавишу и функцию для приостановки моего сценария:
; Create a hot key. I'm using the "Pause/Break" key typically located near the number pad on the keyboard. The keycode for this key is simply "{PAUSE}"
HotKeySet("{PAUSE}", "togglePause")
; Create a Boolean (True of False variable) to tell your program whether or not your program is paused or unpaused. Set it equal to 'False' so the script is running by default.
Global $isPaused = False
; Create the togglePause function to stop/start the script
Func togglePause()
; When this function is initiated, the code on the next line 'toggles' the variable to True/False. If the script is unpaused (the $isPaused variable is set to 'False') then the next line will change it to 'True' and vice versa.
$isPaused = Not $isPaused
; Create a while loop to stall the program
; The line below is the same thing as "While $isPaused == True"
While $isPaused
; This code will run constantly until the $isPaused variable is set to 'True'. To make the script do nothing, simply add a sleep command.
Sleep(100)
WEnd
EndFunc
Это можно сделать нажатием горячей клавиши (в данном случае Pause/Break) или простым вызовом togglePause()
. Пример:
; Create a hot key. I'm using the "Pause/Break" key typically located near the number pad on the keyboard. The keycode for this key is simply "{PAUSE}"
HotKeySet("{PAUSE}", "togglePause")
; Create a Boolean (True of False variable) to tell your program whether or not your program is paused or unpaused. Set it equal to 'False' so the script is running by default.
Global $isPaused = False
MsgBox(0, "Unpaused", "You are able to see this because the program is unpaused!")
; CODE HERE!
MsgBox(0, "Pausing", "The script will automatically be paused once this dialog closes. Press the pause/break key to unpause!")
togglePause()
Sleep(500)
MsgBox(0, "Ta-Da!", "The script has been manually unpaused!")
; Create the togglePause function to stop/start the script
Func togglePause()
; When this function is initiated, the code on the next line 'toggles' the variable to True/False. If the script is unpaused (the $isPaused variable is set to 'False') then the next line will change it to 'True' and vice versa.
$isPaused = Not $isPaused
; Create a while loop to stall the program
; The line below is the same thing as "While $isPaused == True"
While $isPaused
; This code will run constantly until the $isPaused variable is set to 'True'. To make the script do nothing, simply add a sleep command.
Sleep(100)
WEnd
EndFunc
Ответ №2:
Sleep already — это функция «пауза» в AutoIt.
Единственный другой способ приостановить работу скрипта — щелкнуть значок трея в режиме отладки.
Ответ №3:
Вы всегда можете использовать следующий метод. Я думаю, что это самый эффективный способ.
HotKeySet("{F8}", "StartScript")
While 1
While $script = True
MAIN SCRIPT HERE
WEnd
WEnd
Func StartScript() ; Functions are normally placed last, making it easier to browse the code.
If $script = False Then
$script = True
ToolTip("Runing|Press F8 to Stop",200,100,"Script Name",1,2)
Sleep(2000)
ToolTip("")
Else
$script = False
ToolTip("Stoped|Press F8 to Start",200,100,"Script Name",1,2)
Sleep(2000)
ToolTip("")
EndIf
EndFunc ; ==> StartScript