2017-01-29 26 views
-2

У меня сейчас есть программа, созданная в AutoIt. Это то, что написано в качестве кода, а также некоторые замечания, которые могут быть полезны для ответа на мой вопрос:Как заставить программу останавливаться после нажатия кнопки «Q» в AutoIt?

;File with data is pw.txt 
$fh = FileOpen("pw.txt") 
;Loops 5 times, every time it loops $attempt should equal the next line of pw.txt 
For $i = 1 To 10 
$attempt = FileReadLine($fh) 
MouseClick("left");MouseClick("left",711,256) 
Sleep(700) 
Send($attempt);Enters whatever is in $attempt variable 
Sleep(700) 
Send("{enter}") 
Sleep(700) 
MouseClick("left") 
Sleep(700);Once first loop is finished, second loop begins. The only thing that is different is what is entered ($attempt) 
Next 
FileClose("pw.txt");After finished looping, file closes. 

Ради этого вопроса, я поставил счетчик цикла до 10, так что после $ я = 10 (после 10-ти циклов) программа будет активна, но никаких действий не будет.

Я хочу сделать так, чтобы, если пользователь нажимает кнопку «Q» на клавиатуре, моя программа останавливается и не выполняет никаких дальнейших действий (я не хочу полностью закрывать программу, просто остановите цикл) , Предпочтительно, я хотел бы, чтобы цикл начинался с 1 в следующий раз, когда я запускаю программу

Например, если я был в цикле 4, и я нажал кнопку «Q», цикл остановился, а затем я должен можно нажать кнопку «F5», чтобы снова запустить мою программу, и она будет на петле 1.

Любая помощь будет принята с благодарностью! Благодаря!

+1

Посмотрите на HotKeySet – Richard

ответ

0

Вам нужен основной цикл, который позволяет снова и снова запускать ваш тайм-цикл. Также вам нужны функции для запуска и остановки таймера, вызванного горячими клавишами:

HotKeySet('q', '_stopLoop') 
HotKeySet('{F5}', '_runLoop') 
HotKeySet('^!e', '_exit') ; (Ctrl+Alt+e) required to stop the main loop 
Global $iLoopCounter 

; start your loop now 
_runLoop() 


; you need a main loop 
While True 
    Sleep(10) 
WEnd 

Func _exit() 
    Exit 
EndFunc 

Func _MyLoop() 
    While $iLoopCounter < 10 
     $iLoopCounter += 1 
     ; your loop code here 

     ;==================================== for demonstration 
     ConsoleWrite('$iLoopCounter: ' & $iLoopCounter & @CRLF) 
     Sleep(1000) 
     ;====================================================== 

    WEnd 
EndFunc 

Func _runLoop() 
    $iLoopCounter = 0 
    _MyLoop() 
EndFunc 

Func _stopLoop() 
    $iLoopCounter = 10 
EndFunc