AutoIt: While-Wend Schleife. Func-EndFunc.

08/15/2015 14:08 OnlyGood#1
Ich möchte in meiner While-Wend Schleife verschiedene Tasten drücken lassen, jedoch eine bestimme Taste durchgehend gedrückt lassen.

Ich hab 3 Func Befehle: Starten(F1), Ende(F2), Pause(F3).

Ich möchte, wenn ich F1(Starten) drücke, dass er mir die Befehle abarbeitet die er jede Sekunde einmal drücken soll, aber dazu soll noch eine Leertaste permanent gedrücken sein.

Bei Pause(F3) soll er alles pausiern.

Code:
HotKeySet ("{F1}", "Start")
HotKeySet ("{F2}", "Ende")
HotKeySet ("{F3}", "Pause")


While(1)
	Sleep(1000)
WEnd

Func Start()
While(1)
	Send("{a down}")
	Sleep(100)
	Send("{a up}")
	Sleep(1020)
	Send("{c down}")
	Sleep(100)
	Send("{c up}")
	Sleep(1020)
	Send("{d down}")
	Sleep(100)
	Send("{d up}")
	Sleep(200)
    WEnd
EndFunc


Func Pause()
	While(1)
		Sleep(10000)
	WEnd
	EndFunc


Func Ende()
	Exit
	EndFunc
Soviel wäre schon.
Vielen Dank.
08/15/2015 15:24 xKemya#2
Can you ask in English?
08/15/2015 16:56 mlukac89#3
Try like this, with F1 u start / pause script and when u run it default is paused.

If that dont work try to add #RequireAdmin on top of your script.

Code:
HotKeySet ("{F1}", "Start") ; start / pause script
HotKeySet ("{F2}", "Ende")  ; exit script

Global $pause = False

; idle
While 1
    Sleep(1000)
WEnd

Func Start()
    $pause = Not $pause
    While $pause
        Send("{a down}")
        Sleep(100)
        Send("{a up}")
        Sleep(1020)
        Send("{c down}")
        Sleep(100)
        Send("{c up}")
        Sleep(1020)
        Send("{d down}")
        Sleep(100)
        Send("{d up}")
        Sleep(200)
    WEnd

EndFunc

Func Ende()
    Exit
EndFunc ; => exit
08/15/2015 17:09 MaxChri#4
Schau dir mal in der AutoIt Hilfe den Befehl Send("") an.
Weiteres wirst da erfahren.
08/21/2015 15:04 WJNeeson#5
Bin mir nicht sicher wie genau du das jetzt haben möchtest:

Hierbei drückt er permanent die Leertaste runter und jede Sekunde einmal jeden Befehl. So wie du es im Startpost beschrieben hast.

Also: a - c - d - Pause - a - c - d - Pause - a - c - d usw...

PHP Code:
HotKeySet("{F1}""_fStart") ;Start/Pause switch
HotKeySet("{F2}""_fEnde")

Global 
$bPause False

Do
    
Sleep(1000)
Until $bPause Not $bPause

Func _fStart
()
    
$ta TimerInit()
    
$tc TimerInit()
    
$td TimerInit()

    
$bPause Not $bPause
    
While $bPause
        Send
("{space down}")
        If 
TimerDiff($ta) >= 1020 Then
            Send
("{a down}")
            
Sleep(100)
            
Send("{a up}")
            
$ta TimerInit()
        EndIf
        If 
TimerDiff($tc) >= 1020 Then
            Send
("{c down}")
            
Sleep(100)
            
Send("{c up}")
            
$tc TimerInit()
        EndIf
        If 
TimerDiff($td) >= 1020 Then
            Send
("{d down}")
            
Sleep(100)
            
Send("{d up}")
            
$td TimerInit()
        EndIf
    
WEnd
    Send
("{space up}")
EndFunc

Func _fEnde
()
    Exit
EndFunc 
Laut deinem Script möchtest du es aber so haben, dass nach jeder Sekunde jeweils ein Befehl ausgeführt wird.

Also: a - Pause - c - Pause - d - Pause - a - Pause - c - Pause usw...

PHP Code:
HotKeySet("{F1}""_fStart") ;Start/Pause switch
HotKeySet("{F2}""_fEnde")

Global 
$bPause False

Do
    
Sleep(1000)
Until $bPause Not $bPause

Func _fStart
()
    
$timer TimerInit()
    
$i 1

    $bPause 
Not $bPause
    
While $bPause
        Send
("{space down}")
        If 
TimerDiff($timer) >= 1020 Then
            
If $i 1 Then
                Send
("{a down}")
                
Sleep(100)
                
Send("{a up}")
            ElseIf 
$i 2 Then
                Send
("{c down}")
                
Sleep(100)
                
Send("{c up}")
            ElseIf 
$i 3 Then
                Send
("{d down}")
                
Sleep(100)
                
Send("{d up}")
                
$i 0
            
EndIf
            
$i += 1
            $timer 
TimerInit()
        EndIf
    
WEnd
    Send
("{space up}")
EndFunc

Func _fEnde
()
    Exit
EndFunc