[AutoIt] Problem mit While-Schleife

03/18/2011 21:32 blumiboy#1
Hallo. Ich bin noch Anfänger, also bitte keine dummen Sprüche.

Also. Ich möchte dass wenn ich Button1 drücke die Leertaste immer gedrückt wird und es immer nach 8Sek die Taste F3 drückt. Das mit der Leertaste klapp gut. Aber die F3 Taste wir nicht gedrückt. Was habe ich falsch gemacht?? Wenn ihr noch andere Fehler bemerkt, könnt ihr es mir auch noch sagen.

PHP Code:
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Farmbot by bls"364100193125)
$Button1 GUICtrlCreateButton("Start"848105330)
$Button2 GUICtrlCreateButton("Pause"12848105330)
$Button3 GUICtrlCreateButton("Beenden"24848105330)
$Label1 GUICtrlCreateLabel("Umhänge:"16165317)
GUICtrlCreateInput(""72168921)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
            
        Case 
$Button1
            sleep
(5000)
            
winwaitactive("Future-World2 - Germany´s No.1")
            While 
1
                
While 1
                    send
("{SPACE}")
                
WEnd
                send
("{F3}")
                
sleep(8000)
            
WEnd
            
        
Case $Button2 
            
While 1
                sleep
(500)
                
TrayTip("Farmbot by bls""Pause"00,)
            
WEnd
        
        
Case $Button3
            
Exit
            
    EndSwitch
WEnd 
03/18/2011 22:19 Elektrochemie#2
Weil du (wieso auch immer) die SPACE Taste in eine eigene While Scheife gesetzt hast.

Probier mal

Code:
            While 1
                    send("{SPACE}")
                send("{F3}")
                sleep(8000)
            WEnd
03/18/2011 22:20 TheOwnWay#3
Quote:
Originally Posted by Elektrochemie View Post
Weil du (wieso auch immer) die SPACE Taste in eine eigene While Scheife gesetzt hast.

Probier mal

Code:
            While 1
                    send("{SPACE}")
                send("{F3}")
                sleep(8000)
            WEnd
Wird so nicht funktionieren.
Er will ja immer Space gedrückt haben so wie ich das mitbekommen habe und nur alle 8 Sekunden F3.

Deine Version drückt Space, F3, wartet 8 Sek und fängt wieder bei Space an.
03/18/2011 22:23 Elektrochemie#4
Ja dann ist Sleep aber die falsche Art. Damit wird das nicht klappen. Ausser du kannst in AutoIT Threads erstellen.
03/20/2011 19:55 derpo#5
Schau dir doch mal die Timerfunktionen an :
PHP Code:
$Timer TimerInit()
While 
1
If TimerDiff($Timer) >= 8000 Then
;Tu dies und das
$Timer 
TimerInit
EndIf
Sleep(10)
WEnd 
03/21/2011 15:55 KDeluxe#6
AdlibRegister und AdlibUnRegister wäre auch noch eine Möglichkeit:
PHP Code:
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Farmbot by bls"364100)
$Button1 GUICtrlCreateButton("Start"848105330)
$Button2 GUICtrlCreateButton("Pause"12848105330)
$Button3 GUICtrlCreateButton("Beenden"24848105330)
$Label1 GUICtrlCreateLabel("Umhänge:"16165317)
GUICtrlCreateInput(""72168921)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While Sleep(10)
    
$nMsg GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            WinActivate
("Future-World2 - Germany´s No.1")
            
AdlibRegister("_Space"50)
            
AdlibRegister("_F3"8000)
         Case 
$Button2
            AdlibUnRegister
("_Space")
            
AdlibUnRegister("_F3")
        Case 
$Button3
            
Exit
    EndSwitch
WEnd

Func _Space
()
    
Send("{SPACE}")
EndFunc

Func _F3
()
    
Send("{F3}")
EndFunc