Wie heißt dieser Ladebalken

  • Hallo PokerFace,

    Der Stil heisst $PBS_MARQUEE, in AutoIt ist er so umgesetzt bzw. einzuetzen:

    Spoiler anzeigen
    [autoit]

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

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

    Opt("GUIOnEventMode", 1)

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

    $Form1 = GUICreate("Form1", 545, 25, -1, -1, $WS_POPUP, $WS_EX_TOOLWINDOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Progress1 = GUICtrlCreateProgress(0, 0, 545, 25, $PBS_MARQUEE)
    $hProgress = GUICtrlGetHandle($Progress1)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 10)
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc ;==>Form1Close

    [/autoit]

    mfg (Auto)Bert

  • so ich hab jetzt das ganze mal von meiner xp partition gestartet und das funktioniert

  • Also der Balken selber heißt: "Progressbar".

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Vielen Dank!
    Ich werde es mir mal anschauen und versuchen :)
    Danke Danke Danke

    benne

  • Hallo

    Ich habe nur ein kleines Problem mit meiner Logik.

    So sieht mein Skript nun aus.


    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <File.au3>
    ;------------------------------
    #include <WindowsConstants.au3>
    #include <SendMessage.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    ;------------------------------- -> Die Includes für den Ladebalken!
    $bGetBENNE = _GetBENNE()
    If $bGetBENNE Then
    $Buchstabe = $bGetBENNE&"\"
    Else
    MsgBox (1, "Fehler", "Bitte stecken sie den Stick ein! Er wurde nicht erkannt!")
    Exit
    EndIf
    ;##################### Stick Main ##################################
    $StickMain = GUICreate("Benedikts USB Stick!", 625, 443, 323, 241)
    $Label1 = GUICtrlCreateLabel("Kategorie", 168, 32, 298, 94)
    GUICtrlSetFont(-1, 48, 800, 0, "Comic Sans MS")
    $DVD = GUICtrlCreateButton("DVD etc.", 32, 152, 177, 73, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Comic Sans MS")
    $Festplatte = GUICtrlCreateButton("Festplatte", 224, 152, 177, 73, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Comic Sans MS")
    $Internet = GUICtrlCreateButton("Internet", 424, 152, 177, 73, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Comic Sans MS")
    $Sicherheit = GUICtrlCreateButton("Sicherheit", 24, 288, 177, 73, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Comic Sans MS")
    $Sonstiges = GUICtrlCreateButton("Sonstiges", 224, 288, 177, 73, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Comic Sans MS")
    $Images = GUICtrlCreateButton("Images", 424, 288, 177, 73, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Comic Sans MS")
    GUISetState(@SW_SHOW)
    ;####################################################################
    ;##################### Stick Child ##################################
    $StickChild = GUICreate("Benedikts USB Stick!", 498, 188, 398, 390)
    $Auswahl = GUICtrlCreateCombo("Auswählen!", 136, 40, 241, 25)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    GUICtrlSetCursor (-1, 0)
    $AuswahlButton = GUICtrlCreateButton("Go!", 264, 88, 177, 73, 0)
    GUICtrlSetFont(-1, 24, 800, 0, "Comic Sans MS")
    $Back = GUICtrlCreateButton("Zurück", 56, 88, 177, 73, 0)
    GUICtrlSetFont(-1, 22, 800, 0, "Comic Sans MS")
    GUISetState(@SW_HIDE)
    ;####################################################################
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Back
    GUISetState (@SW_HIDE, $StickChild)
    GUISetState (@SW_SHOW, $StickMain)
    GUICtrlSetData ($Auswahl, "")
    Case $AuswahlButton
    If GuiCtrlRead($Auswahl) <> "" Then
    ShellExecute($Dir&"\"&GuiCtrlRead($Auswahl))
    EndIF
    Case $GUI_EVENT_CLOSE
    Exit
    Case $DVD
    GUISetState (@SW_HIDE, $StickMain)
    GUISetState (@SW_SHOW, $StickChild)
    $Dir = $Buchstabe&"DVD etc"
    $Dir_Combo = _FileListToArray($Dir)
    If Not @error Then
    For $i = 1 To Ubound($Dir_Combo)-1
    If FileGetAttrib($Dir&"\"&$Dir_Combo[$i]) = "D" Then
    GuiCtrlSetData($Auswahl, $Dir_Combo[$i])
    EndIf
    Next
    EndIf

    Case $Festplatte
    GUISetState (@SW_HIDE, $StickMain)
    GUISetState (@SW_SHOW, $StickChild)
    $Dir = $Buchstabe&"Festplatte"
    $Dir_Combo = _FileListToArray($Dir)
    If Not @error Then
    For $i = 1 To Ubound($Dir_Combo)-1
    If FileGetAttrib($Dir&"\"&$Dir_Combo[$i]) = "D" Then
    GuiCtrlSetData($Auswahl, $Dir_Combo[$i])
    EndIf
    Next
    EndIf

    Case $Internet
    GUISetState (@SW_HIDE, $StickMain)
    GUISetState (@SW_SHOW, $StickChild)
    $Dir = $Buchstabe&"Internet"
    $Dir_Combo = _FileListToArray($Dir)
    If Not @error Then
    For $i = 1 To Ubound($Dir_Combo)-1
    If FileGetAttrib($Dir&"\"&$Dir_Combo[$i]) = "D" Then
    GuiCtrlSetData($Auswahl, $Dir_Combo[$i])
    EndIf
    Next
    EndIf

    Case $Sicherheit
    GUISetState (@SW_HIDE, $StickMain)
    GUISetState (@SW_SHOW, $StickChild)
    $Dir = $Buchstabe&"Sicherheit"
    $Dir_Combo = _FileListToArray($Dir)
    If Not @error Then
    For $i = 1 To Ubound($Dir_Combo)-1
    If FileGetAttrib($Dir&"\"&$Dir_Combo[$i]) = "D" Then
    GuiCtrlSetData($Auswahl, $Dir_Combo[$i])
    EndIf
    Next
    EndIf

    Case $Sonstiges
    GUISetState (@SW_HIDE, $StickMain)
    GUISetState (@SW_SHOW, $StickChild)
    $Dir = $Buchstabe&"Sonstiges"
    $Dir_Combo = _FileListToArray($Dir)
    If Not @error Then
    For $i = 1 To Ubound($Dir_Combo)-1
    If FileGetAttrib($Dir&"\"&$Dir_Combo[$i]) = "D" Then
    GuiCtrlSetData($Auswahl, $Dir_Combo[$i])
    EndIf
    Next
    EndIf

    Case $Images
    GUISetState (@SW_HIDE, $StickMain)
    GUISetState (@SW_SHOW, $StickChild)
    $Dir = $Buchstabe&"Images"
    $Dir_Combo = _FileListToArray($Dir)
    If Not @error Then
    For $i = 1 To Ubound($Dir_Combo)-1
    If FileGetAttrib($Dir&"\"&$Dir_Combo[$i]) = "D" Then
    GuiCtrlSetData($Auswahl, $Dir_Combo[$i])
    EndIf
    Next
    EndIf
    EndSwitch
    WEnd
    Func _GetBENNE()
    $aDGD = DriveGetDrive("REMOVABLE")
    For $i = 1 To $aDGD[0]
    If DriveGetLabel($aDGD[$i]) = "BENNE" Then Return $aDGD[$i]
    Next
    Return False
    EndFunc

    [/autoit]

    Nur wo kann dieser Skripteil reinpassen?!


    Spoiler anzeigen
    [autoit]

    $Form1 = GUICreate("Form1", 545, 25, -1, -1, $WS_POPUP, $WS_EX_TOOLWINDOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Progress1 = GUICtrlCreateProgress(0, 0, 545, 25, $PBS_MARQUEE)
    $hProgress = GUICtrlGetHandle($Progress1)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 10)
    GUISetState(@SW_SHOW)
    While 1
    Sleep(100)
    WEnd
    Func Form1Close()
    Exit
    EndFunc ;==>Form1Close

    [/autoit]

    Wie du siehst, möchte ich, dass, während der Computer sucht ob der Stick vorhanden ist, dieser Balken erscheint.
    Denn wenn ich ohne den Balken das Skript starte, dann passiert im Moment gar nichts ca. 5 Sekunden lang. Erst dann wurde überprüft ob der Stick vorhanden ist.


    Also das Problem , ich kann die nicht integrieren^^ Also das es so läuft wie ich möchte =D


    Während der Zeit, soll einfach der Balken durchlaufen, das der Nutzer merkt:
    Aha, da läuft doch was.

    Vielen Dank


    Benedikt


  • Hallo PokerFace,

    hier noch ein Beispiel aus der Hilfe, wo der Progress in der Statusbar angezeigt wird:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <ProgressConstants.au3>
    #include <SendMessage.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_SB = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work

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

    _Main()

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

    Func _Main()

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

    Local $hGUI, $hProgress, $hInput, $input, $progress, $hStatus
    Local $aParts[4] = [80, 160, 300, -1]

    ; Create GUI
    $hGUI = GUICreate("StatusBar Embed Control", 400, 300)

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

    ;===============================================================================
    ; defaults to 1 part, no text
    $hStatus = _GUICtrlStatusBar_Create ($hGUI)
    _GUICtrlStatusBar_SetMinHeight ($hStatus, 20)

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

    ;===============================================================================
    GUISetState()

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

    ; Initialize parts
    _GUICtrlStatusBar_SetParts ($hStatus, $aParts)
    _GUICtrlStatusBar_SetText ($hStatus, "Part 1")
    _GUICtrlStatusBar_SetText ($hStatus, "Part 2", 1)

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

    ; Embed a progress bar
    If @OSTYPE = "WIN32_WINDOWS" Then
    $progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl ($hStatus, 2, $hProgress)
    Else
    $progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_MARQUEE) ; marquee works on Win XP and above
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl ($hStatus, 2, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200) ; marquee works on Win XP and above
    EndIf

    $input = GUICtrlCreateInput("This is Embeded", 0, 0)
    $hInput = GUICtrlGetHandle($input)
    _GUICtrlStatusBar_EmbedControl ($hStatus, 3, $hInput, 3)

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]


    Kannst es dir ja auf dein Skript umschreiben,

    ps.: ohne Stick läuft das gepostete Skript gar nicht Meldungen:

    [autoit]

    >"C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Programme\AutoIt3\Downloads\FunKey\Spoiler\Wie heißt dieser Ladebalken_Post_96239_Beitrag_8_Skript_1.au3" /autoit3dir "C:\Programme\AutoIt3" /UserParams
    +>23:22:48 Starting AutoIt3Wrapper v.1.10.1.14 Environment(Language:0407 Keyboard:00000407 OS:WIN_XP/Service Pack 3 CPU:X86 ANSI)
    >Running AU3Check (1.54.14.0) from:C:\Programme\AutoIt3
    C:\Programme\AutoIt3\Downloads\FunKey\Spoiler\Wie heißt dieser Ladebalken_Post_96239_Beitrag_8_Skript_1.au3(63,27) : WARNING: $Dir: possibly used before declaration.
    ShellExecute($Dir&
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Downloads\FunKey\Spoiler\Wie heißt dieser Ladebalken_Post_96239_Beitrag_8_Skript_1.au3 - 0 error(s), 1 warning(s)
    ->23:22:48 AU3Check ended.rc:1
    >Running:(3.3.0.0):C:\Programme\AutoIt3\autoit3.exe "C:\Programme\AutoIt3\Downloads\FunKey\Spoiler\Wie heißt dieser Ladebalken_Post_96239_Beitrag_8_Skript_1.au3"
    C:\Programme\AutoIt3\Downloads\FunKey\Spoiler\Wie heißt dieser Ladebalken_Post_96239_Beitrag_8_Skript_1.au3 (148) : ==> Subscript used with non-Array variable.:
    For $i = 1 To $aDGD[0]
    For $i = 1 To $aDGD^ ERROR->23:22:49 AutoIT3.exe ended.rc:1
    +>23:22:50 AutoIt3Wrapper Finished
    >Exit code: 1 Time: 2.871

    [/autoit]

    mfg (Auto)Bert

    2 Mal editiert, zuletzt von AutoBert (24. Mai 2009 um 23:27)

  • Vielen Dank (Auto)Bert :)


    Etwas konkreter die Frage:
    Kann man einen Ablauf abwarten?

    [autoit]

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

    [/autoit]


    Wenn ich die Funktion aufrufe:

    [autoit]

    $bGetBENNE = _GetBENNE()

    [/autoit]


    Dann dauert dies eine Zeit bist die Abfrage nach dem Stick gelaufen ist!


    Während des Vorganges des Abfragens soll eben der Balken kommen.
    Das mach ich einfach mit:

    [autoit]

    While 1
    If >Abfragen ob Vorgang von _GetBENNE() läuft< Then
    GUISetState (@SW_SHOW, $Balken)
    Else
    GUISetState (@SW_HIDE, $Balken)
    EndIf
    WEnd

    [/autoit]


    Nur ein Teil fehlt ^^
    Ich komm nicht ganz drauf =(

  • Hallo Benne, du könntest es so probieren (Nur als Kommentare in das Hilfe Beispiel eingefügt):

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <ProgressConstants.au3>
    #include <SendMessage.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_SB = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work

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

    _Main()

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

    Func _Main()

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

    Local $hGUI, $hProgress, $hInput, $input, $progress, $hStatus

    ;<======================================================== hier baust du deine GUI auf, aber nur die GUI sonst noch nichts

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

    Local $aParts[4] = [80, 160, 300, -1]

    ; Create GUI
    $hGUI = GUICreate("StatusBar Embed Control", 400, 300)

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

    ;===============================================================================
    ; defaults to 1 part, no text
    $hStatus = _GUICtrlStatusBar_Create ($hGUI)
    _GUICtrlStatusBar_SetMinHeight ($hStatus, 20)

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

    ;===============================================================================
    GUISetState()

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

    ; Initialize parts
    _GUICtrlStatusBar_SetParts ($hStatus, $aParts)
    _GUICtrlStatusBar_SetText ($hStatus, "Part 1")
    _GUICtrlStatusBar_SetText ($hStatus, "Part 2", 1)

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

    ; Embed a progress bar
    If @OSTYPE = "WIN32_WINDOWS" Then
    $progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl ($hStatus, 2, $hProgress)
    Else
    $progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_MARQUEE) ; marquee works on Win XP and above
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl ($hStatus, 2, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200) ; marquee works on Win XP and above
    EndIf
    <================================================================ hier gehts dann weiter
    ;der [s]Ladebalken[/s] Progress läuft schon, und läuft und läuft
    $bGetBENNE = _GetBENNE() ; Funktion starten
    ;jetzt entweder Progress löschen oder verstecken falls du in an anderer Stelle nochmal benutzen willst
    ;deine MsgLoop hier einfügen
    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main
    <============ hier Funcs reinkopieren

    [/autoit]

    mfg (Auto)Bert