Auto it Frage

02/21/2011 15:05 PingBot#1
Hey ich habe eine frage ich möchte gerne in auto it etwas mit ladebalken machen. Wenn dieser durch gelaufen ist soll sich ein "programm" öffnen
aber so wie ich es in Autoit habe öffnet es das programm so oft bis der lade balken durch gelaufen ist.

Hilfe.

HTML Code:
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Intro", 235, 96, 279, 266)
$Label1 = GUICtrlCreateLabel("Hey, Das ist mein TEST ", 32, 16, 161, 17)
$Progress1 = GUICtrlCreateProgress(40, 32, 142, 25)
$Button1 = GUICtrlCreateButton("Start", 80, 64, 65, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
			
				Case $Button1
               for $i = 0 to 100
				
		GUICtrlSetData($Progress1, $i)
		sleep(50)
		
		run ("Programm")
		
		Next

			
		EndSwitch
WEnd
02/21/2011 15:39 BlackHybrid#2
Das liegt daran dass du es in einer For schleife hast in der alles wie in dem fall 100x ausgeführt wird.
02/21/2011 15:53 PingBot#3
Ja aber wenn ich das jetzt anders schreibe ist der ladebalken in 1sek voll geladen das möchte ich auch nicht
02/21/2011 16:03 BlackHybrid#4
Also dauerts ein paar sec. Aber mal eine andere Frage wie lange soll es denn dauern?

PHP Code:
While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit

                Case 
$Button1
               
for $i 0 to 100

        GUICtrlSetData
($Progress1$i)
        
sleep(50)
        
Next


        
EndSwitch
WEnd 
02/21/2011 16:19 PingBot#5
Am besten so wie mit der schleife nur du hast jz wieder eine schleife gemacht so öffnet sich das programm wieder 100 - 200 mal
02/21/2011 16:35 BlackHybrid#6
Dann mach doch auch net das Run in die schleife xD
Ein Progressbar braucht sowieso irgend einen sinn aber ansonsten passts doch so wie ichs gepostet hab.

Ansonsten kann mans auch so machen

PHP Code:
While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            
For $i 0 To 100
                GUICtrlSetData
($Progress1$i)
                
Sleep(50)
            
Next
            Run
("Programm")
    EndSwitch
WEnd 
02/21/2011 16:44 PingBot#7
so geht es jetzt auch danke
02/21/2011 16:47 KDeluxe#8
Du solltest am besten nur mit einer Schleife arbeiten. Für dein Vorhaben solltest du lieber einen Timer oder AdlibRegister() benutzen.

Ich hab mal ein Beispiel mit AdlibRegister() gemacht:
PHP Code:
Global $ProgressData

While Sleep(10)
    
$nMsg GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            $ProgressData 
0
            AdlibRegister
("_UpdateProgress"250) ;alle 250 Millisekunden
    
EndSwitch
WEnd

Func _UpdateProgress
()
    
GUICtrlSetData($Progress1$ProgressData)
    
$ProgressData += 1
    
If $ProgressData 100 Then
        
;Run()
        
AdlibUnRegister("_UpdateProgress")
    EndIf
EndIf 
02/21/2011 16:56 PingBot#9
Quote:
Du solltest am besten nur mit einer Schleife arbeiten. Für dein Vorhaben solltest du lieber einen Timer oder AdlibRegister() benutzen.

Ich hab mal ein Beispiel mit AdlibRegister() gemacht:
PHP-Code:
Global $ProgressData

While Sleep(10)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$ProgressData = 0
AdlibRegister("_UpdateProgress", 250) ;alle 250 Millisekunden
EndSwitch
WEnd

Func _UpdateProgress()
GUICtrlSetData($Progress1, $ProgressData)
$ProgressData += 1
If $ProgressData > 100 Then
;Run()
AdlibUnRegister("_UpdateProgress")
EndIf
EndIf

Das ist mir noch etwas zu hoch.