Progressbar | Download

  • Hallo,
    ich möchte, das eine Progressbar den Status des Downloads zeigt, das Problem ist, das es bei mir nie richtig funktioniert.
    Ich möchte, das es nach einem Download, die Progressbar wieder auf 0 setzt und wieder durchläuft.
    Ohne die Progressbar funktioniert alles.
    Zum Script: Es werden aus einer .txt Datei Links ausgelesen, die anschließend gedownloadet werden.
    Hier das Script:

    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 445, 192, 124)
    $Progress1 = GUICtrlCreateProgress(136, 352, 337, 17)
    $Downloadstart = GUICtrlCreateButton("Downloaden", 216, 400, 169, 33, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel("Label", 72, 40, 484, 81)
    $Input1 = GUICtrlCreateInput("Bitte auf ""Datei auswählen"" klicken", 80, 200, 409, 21)
    $auswahlen = GUICtrlCreateButton("Datei auswählen", 368, 224, 121, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    DirCreate("downloader")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $auswahlen
    $filedialog = FileOpenDialog("title",@WorkingDir & "\","Textfiles (*.txt;*.ini)")
    GUICtrlSetData($Input1,$filedialog)
    Case $Downloadstart
    If GUICtrlRead($Input1) = "Bitte auf ""Datei auswählen"" klicken" Then
    MsgBox(0,"Fehler","Bitte auf ""Datei auswählen"" klicken und eine Datei auswählen")
    Else
    MsgBox(0,"ok","ok")
    Dim $aLinks
    _FileReadToArray(GUICtrlRead($Input1),$aLinks)
    For $x = 1 to $aLinks[0]
    InetGet($aLinks[$x],@ScriptDir&"\downloader\dn_"&$x&".txt")
    MsgBox(0,'Record:' & $x, $aLinks[$x])
    Next
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von Sparky (12. April 2011 um 15:41)

  • du könntest ja mit inetgetsize die größe holen, und dann mit inetgetinfo in einer while schleife immer die bisher gelesenen bytes mit der grösse vergleichen, um somit den prozentwert auszurechnen
    kann ich dir leider gerade nicht machen, habe grad nur ein linux da

  • So:

    Spoiler anzeigen
    [autoit]

    For $x = 1 to $aLinks[0]
    InetGet($aLinks[$x],@ScriptDir&"\downloader\dn_"&$x&".txt")
    $Download_Prozent_1 = 100 * InetGetInfo($aLinks[$x],0)/InetGetInfo($aLinks[$x],1)
    GUICtrlSetData($Progress1, Round($Download_Prozent_1))
    MsgBox(0,'Record:' & $x, $aLinks[$x])
    Next

    [/autoit]

    Geht das leider auch nicht

  • [autoit]

    $Download_Prozent_1 = 100 * InetGetInfo($aLinks[$x],0)/InetGetInfo($aLinks[$x],1)
    GUICtrlSetData($Progress1, Round($Download_Prozent_1))

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

    das muss natürlich auch in eine while schleife, weil sonst holt der sich das ja nur 1 mal, was natürlich keinen sinn macht

  • Achso, daran hab ich garnicht gedacht, werde es gleich testen+

    Edit:

    Code
    C:\Users\*\Desktop\downloader.au3 (40) : ==> Variable used without being declared.:
    $Download_Prozent_1 = 100 * InetGetInfo($aLinks[$x],0)/InetGetInfo($aLinks[$x],1)
    $Download_Prozent_1 = 100 * InetGetInfo(^ ERROR
    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 445, 192, 124)
    $Progress1 = GUICtrlCreateProgress(136, 352, 337, 17)
    $Downloadstart = GUICtrlCreateButton("Downloaden", 216, 400, 169, 33, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel("Label", 72, 40, 484, 81)
    $Input1 = GUICtrlCreateInput("Bitte auf ""Datei auswählen"" klicken", 80, 200, 409, 21)
    $auswahlen = GUICtrlCreateButton("Datei auswählen", 368, 224, 121, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    DirCreate("downloader")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $auswahlen
    $filedialog = FileOpenDialog("title",@WorkingDir & "\","Textfiles (*.txt;*.ini)")
    GUICtrlSetData($Input1,$filedialog)
    Case $Downloadstart
    If GUICtrlRead($Input1) = "Bitte auf ""Datei auswählen"" klicken" Then
    MsgBox(0,"Fehler","Bitte auf ""Datei auswählen"" klicken und eine Datei auswählen")
    Else
    MsgBox(0,"ok","ok")
    Dim $aLinks
    _FileReadToArray(GUICtrlRead($Input1),$aLinks)
    For $x = 1 to $aLinks[0]
    InetGet($aLinks[$x],@ScriptDir&"\downloader\dn_"&$x&".txt")
    MsgBox(0,'Record:' & $x, $aLinks[$x])
    Next
    EndIf
    EndSwitch
    $Download_Prozent_1 = 100 * InetGetInfo($aLinks[$x],0)/InetGetInfo($aLinks[$x],1)
    GUICtrlSetData($Progress1, Round($Download_Prozent_1))
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von Sparky (10. April 2011 um 15:52)

  • habe mal bei dir was geändert

    Spoiler anzeigen
    [autoit]


    _FileReadToArray($filedialog,$aLinks)
    For $x = 1 to $aLinks[0]
    ;Msgbox(0,'Record:' & $x, $aLinks[$x]);zur kontrolle
    $test = StringSplit($aLinks[$x], "/")
    ;Msgbox(0,'Name', $test[$test[0]]);zurkontrolle
    InetGet($aLinks[$x],@ScriptDir & "\" & $test[$test[0]] )
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • so und jetzt das ganze mit dein Prozess

    Spoiler anzeigen
    [autoit]


    #Include <File.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Dim $aLinks
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 445, 192, 124)
    $Progress1 = GUICtrlCreateProgress(136, 352, 337, 17)
    $Downloadstart = GUICtrlCreateButton("Downloaden", 216, 400, 169, 33, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel("Label", 72, 40, 484, 81)
    $Input1 = GUICtrlCreateInput("Bitte auf ""Datei auswählen"" klicken", 80, 200, 409, 21)
    $auswahlen = GUICtrlCreateButton("Datei auswählen", 368, 224, 121, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    DirCreate("downloader")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $auswahlen
    $filedialog = FileOpenDialog("title",@WorkingDir & "\","Textfiles (*.txt;*.ini)")
    GUICtrlSetData($Input1,$filedialog)
    Case $Downloadstart
    If GUICtrlRead($Input1) = "Bitte auf ""Datei auswählen"" klicken" Then
    MsgBox(0,"Fehler","Bitte auf ""Datei auswählen"" klicken und eine Datei auswählen")
    Else
    ;MsgBox(0,"ok",$filedialog); nur zur kontrolle

    _FileReadToArray($filedialog,$aLinks)
    For $x = 1 to $aLinks[0]
    ;Msgbox(0,'Record:' & $x, $aLinks[$x]);zur kontrolle
    $test = StringSplit($aLinks[$x], "/")
    ;Msgbox(0,'Name', $test[$test[0]]);zur kontrolle
    Do
    For $c = InetGetSize($aLinks[$x])/InetGetSize($aLinks[$x])to 100 Step +1
    InetGet($aLinks[$x],@ScriptDir & "\" & $test[$test[0]] )
    GUICtrlSetData($Progress1, Round($c))
    Next
    Until $c
    Next

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

    EndIf

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

    EndSwitch

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


    WEnd

    [/autoit]
  • Funktioniert, doch leider stockt das Script sehr stark und ich bekomme "Keine Rückmeldung"

  • Hallo Sparky,

    dann mach es so:

    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 445, 192, 124)
    $lblDatei = GUICtrlCreateLabel("",5,297,615,22,$SS_Center)
    $prgbarDatei = GUICtrlCreateProgress(5, 322, 615, 17)
    $lblalle = GUICtrlCreateLabel("",5,347,615,22,$SS_Center)
    $prgbarAlle = GUICtrlCreateProgress(5, 372, 615, 17)
    $Downloadstart = GUICtrlCreateButton("Downloaden", 216, 400, 169, 33, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel("Label", 72, 40, 484, 81)
    $Input1 = GUICtrlCreateInput("Bitte auf ""Datei auswählen"" klicken", 80, 200, 409, 21)
    $auswahlen = GUICtrlCreateButton("Datei auswählen", 368, 224, 121, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    DirCreate("downloader")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $auswahlen
    $filedialog = FileOpenDialog("title",@WorkingDir & "\","Textfiles (*.txt;*.ini)")
    GUICtrlSetData($Input1,$filedialog)
    Case $Downloadstart
    If GUICtrlRead($Input1) = "Bitte auf ""Datei auswählen"" klicken" Then
    MsgBox(0,"Fehler","Bitte auf ""Datei auswählen"" klicken und eine Datei auswählen")
    Else
    ;MsgBox(0,"ok","ok")
    Dim $aLinks
    _FileReadToArray(GUICtrlRead($Input1),$aLinks)
    For $x = 1 to $aLinks[0]
    $sDest = @ScriptDir&"\downloader\dn_"&$x&".txt"
    $sUrl = $aLinks[$x]
    $iSize = InetGetSize($sUrl)
    $hDL= InetGet($sUrl,$sDest,1,1)
    Do
    $aInfo = InetGetInfo($hDL)
    Sleep(250)
    $iPercent = Round($aInfo[0] / $iSize * 100,2)
    if $iPercent <> GUICtrlRead($prgbarDatei) Then
    if $iSize = 0 and $aInfo[1] <> 0 Then $iSize= $aInfo[1]
    GUICtrlSetData($lblDatei,$sUrl & " " & $aInfo[0] & "/" & $iSize)
    GUICtrlSetData($prgbarDatei,$iPercent)
    EndIf

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

    Until $aInfo[2]
    InetClose($hDL) ; Handle schließen um die Resourcen freizugeben
    GUICtrlSetData($lblalle, $x & "/" & $aLinks[0] & " Dateien heruntergeladen")
    GUICtrlSetData($prgbaralle, Round($x /$aLinks[0] * 100,0))
    Next
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • ersetze mal zeile 38 und mach mal dies darein da erkennt er welche endungen dein File hat und den Namen vom gedownloadeten File.

    Spoiler anzeigen
    [autoit]


    $test = StringSplit($aLinks[$x], "/")
    $sDest = @ScriptDir & "\" & $test[$test[0]]

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