2017-01-29 41 views
-2

私は現在AutoItでプログラムをセットアップしています。これは、コードとして記述されているものであるだけでなく、私の質問に答えるに有用である可能性があるいくつかの注意事項:AutoItで "Q"ボタンを押すと、プログラムを停止させる方法は?

;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 
関連する問題