Progressbar %-Fortschritt-Anzeige im GUI-Titel

  • Hallo.

    Ich wüsste gerne, ob es möglich ist einen prozentualen Fortschritt im Titel einer GUI anzeigen zu lassen.

    Hier mein bisheriges Script:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Prozessbar", 224, 103, 252, 188)
    $Progress1 = GUICtrlCreateProgress(32, 33, 150, 12)
    $B_LOS = GUICtrlCreateButton("LOS", 72, 64, 75, 25, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel("0%", 8, 72, 36, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1 ; Endlosschleife
    $nMsg = GUIGetMsg() ; Abfrage, ob sich in der GUI etwas ändert
    Switch $nMsg ; Vergleich mit den nachfolgenden Case-Befehlen
    Case $GUI_EVENT_CLOSE ; wird ausgeführt, wenn der Anwender den X-Button klickt
    Exit ; Ende
    Case $B_LOS ; wird ausgeführt, wenn der Anwender den LOS-Button klickt
    _LOS () ; zur Funktion LOS springen
    EndSwitch
    WEnd

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

    Func _LOS () ; Start der Funktion "_LOS ()"
    For $i = 0 To 100 Step 1 ; für $i = 0 bis 100 in einserschritten
    GUICtrlSetData($Progress1,$i) ; übergib den Wert von $i an Prozessbalken
    GUICtrlSetData($Label1,$i & "%")
    Sleep(100) ; Schlafe 100 ms
    Next ; wiederhole das ganze bis $i = 100
    MsgBox(0,"","FERTIG!") ; Erzeuge Message-Box mit Fertig

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

    EndFunc

    [/autoit]

    Danke schonmal im Voraus.

    Einmal editiert, zuletzt von hexpirator (21. Dezember 2011 um 16:00)

  • [autoit]

    $hWnd = GUICreate("")
    GUISetState()

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

    For $i = 0 To 100
    WinSetTitle($hWnd,"",$i & "%")
    Sleep(100)
    Next

    [/autoit]

    Hoffe es ist das was du meinst

  • Mein jetziger Code.


    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Prozessbar", 224, 103, 252, 188)
    $Progress1 = GUICtrlCreateProgress(32, 33, 150, 12)
    $B_LOS = GUICtrlCreateButton("LOS", 72, 64, 75, 25, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel("0%", 8, 72, 36, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1 ; Endlosschleife
    $nMsg = GUIGetMsg() ; Abfrage, ob sich in der GUI etwas ändert
    Switch $nMsg ; Vergleich mit den nachfolgenden Case-Befehlen
    Case $GUI_EVENT_CLOSE ; wird ausgeführt, wenn der Anwender den X-Button klickt
    Exit ; Ende
    Case $B_LOS ; wird ausgeführt, wenn der Anwender den LOS-Button klickt
    _LOS () ; zur Funktion LOS springen
    EndSwitch
    WEnd

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

    Func _LOS () ; Start der Funktion "_LOS ()"
    For $i = 0 To 100 Step 1 ; für $i = 0 bis 100 in einserschritten
    GUICtrlSetData($Progress1,$i) ; übergib den Wert von $i an Prozessbalken
    GUICtrlSetData($Label1,$i & "%")
    WinSetTitle($Form1_1,"","Prozessbar " & $i & "%")
    Sleep(100) ; Schlafe 100 ms
    Next ; wiederhole das ganze bis $i = 100
    MsgBox(0,"","FERTIG!") ; Erzeuge Message-Box mit Fertig

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

    EndFunc

    [/autoit]
  • du solltest im falle des drückens von Los den Knopf disablen mit
    GUICtrlSetState ( $B_LOS, $GUI_DISABLE )
    und nach dem aufruf wieder enablen
    GUICtrlSetState ( $B_LOS, $GUI_ENABLE )

    Zudem kann man während er in der Los funktion ist das Programm nicht beenden, vll mal in event mode der gui reinschauen :)

  • Ja, das hier:

    [autoit]

    For $i = 0 To 100
    WinSetTitle($hWnd,"",$i & "%")
    Sleep(100)
    Next

    [/autoit]


    wäre dafür geeignet