"Anderer" Ladebalken

  • Hallo,
    ich habe in meinem Skript einen Ladebalken:

    [autoit]

    For $i=0 to 75 Sleep (30)GUICtrlSetData ($Progress1, $i)Next;FuncFor $i2 = 75 to 100Sleep (20)GUICtrlSetData ($Progress1, $i2)Next

    [/autoit]


    Die Funktion braucht etwas Zeit, deshalb der Ladebalken.

    Aber mir ist aufgefallen, das es noch einen anderen gibt.
    Und zwar läuft dann in diesem Progress ein Balken nach Links und nach Rechts.
    OHNE genauen Fortschritt.

    Ich weiß nicht wie ich das beschreiben kann :pinch:
    Vielleicht weiß jemand was ich meine.

    Wie kann ich so einen Balken initiieren?

    Edit:
    KEINE AHNUNG warum hier mein AutoIt Auszug hintereinander geklatscht wird ^^

  • Perfekt Danke !
    Daraus ergibt sich nur noch ein kleines Problem.

    Und zwar:
    Wenn ich das mache, dann stoppt die Funktion _GetBENNE den Balken.
    Kann ich nicht parallel den Balken laufen lassen und die Funktion ausführen?

    Hier hab ich euch mal ein Beispiel zusammengebastelt:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <SendMessage.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Name = "NamedesUSB-Sticks"

    [/autoit] [autoit][/autoit] [autoit]

    $Balken = GUICreate("Ladebalken", 545, 25, -1, -1, $WS_POPUP, $WS_EX_TOOLWINDOW)
    $Progress1 = GUICtrlCreateProgress(0, 0, 545, 25, $PBS_MARQUEE)
    $hProgress = GUICtrlGetHandle($Progress1)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlProgressSetMarquee($Progress1, 1, 10)
    $bGetBENNE = _GetBENNE()

    [/autoit] [autoit][/autoit] [autoit]

    If $bGetBENNE <> False Then
    $Buchstabe = $bGetBENNE&"\"
    GUIDelete ($Balken)
    Else
    MsgBox (1, "Fehler", "Bitte stecken sie den Stick ein! Er wurde nicht erkannt!")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetBENNE()
    $aDGD = DriveGetDrive("REMOVABLE")
    For $i = 1 To $aDGD[0]
    If DriveGetLabel($aDGD[$i]) = $Name Then return $aDGD[$i]
    Next
    Return False
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUICtrlProgressSetMarquee($h_Progress, $f_Mode = 1, $i_Time = 100)

    [/autoit] [autoit][/autoit] [autoit]

    Local Const $WM_USER = 0x0400
    Local Const $PBM_SETMARQUEE = ($WM_USER + 10)

    [/autoit] [autoit][/autoit] [autoit]

    Local $var = GUICtrlSendMsg($h_Progress, $PBM_SETMARQUEE, $f_Mode, Number($i_Time))
    If $var = 0 Then
    SetError(1)
    Return 0
    Else
    SetError(0)
    Return $var
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von PokerFace (19. Juni 2010 um 13:36)

  • Hallo PokerFace,

    du hast vergessen eine Endlos-Schleife einzubauen:

    [autoit]

    while GUIGetMsg() <> -3
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _GetBENNE()
    ...
    endfunc

    [/autoit]

    mfg (Auto)Bert

  • Das ist nur ein Beispiel für euch.
    Falls ihr das Phänomen selbst sehen wollt.
    Aber der Haken besteht beim starten des Balkens.
    Durch die Funktion hängt das Skript kurz. (Klar, AutoIt kann nur 1 nach dem anderen)
    Aber der Balken soll durchgehend laufen, bis die Funktion ein Ergebnis hat.
    Probierts einfach aus und ihr seht was ich meine ^^