Downloader mit Fortschrittsanzeige

  • Hi,
    ich bins mal wieder ;) .
    Hoffe das ich nicht nerfe, bin halt noch ein Anfänger :D .

    Also ich hab einen Downloader, der viele Bilder von einer Seite herunterlädt.
    Hier mein bisheriger Code:

    [autoit]


    $Form1 = GUICreate("Downloader", 242, 136, 192, 124)
    $Button1 = GUICtrlCreateButton("Download", 80, 80, 75, 25, $WS_GROUP)
    $Progress1 = GUICtrlCreateProgress(40, 24, 150, 17)
    GUISetState(@SW_SHOW)

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

    Dim $download[101]
    For $i = 0 To 100
    $download[$i] = InetGet("http://www.autoitscript.com/images/autoit_6_240x100.jpg", "logo" & $i &".jpg")
    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    Ich möchte, das wenn ich auf den Button klicke, der Download beginnt und man in der Progressbar sieht wie der Fortschritt davon ist.
    Da es ja mehere Dateien bzw . Bilder sind muss man ja die Filesize zusammen addieren und davon dann den Prozentwert für die Progressbar ausrechenen.

    Weis aber leider nicht wie das geht :( .

    Ich hoffe ihr wisst was ich meine und könnt mir helfen ;) .

    MfG

    Bladerunner

    Einmal editiert, zuletzt von Bladerunner85 (16. Juli 2010 um 11:54)

  • [autoit]


    $Form1 = GUICreate("Downloader", 242, 136, 192, 124)
    $Button1 = GUICtrlCreateButton("Download", 80, 80, 75, 25, $WS_GROUP)
    $Progress1 = GUICtrlCreateProgress(40, 24, 150, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Dim $download[101]
    For $i = 0 To 100
    $download[$i] = InetGet("http://www.autoitscript.com/images/autoit_6_240x100.jpg", "logo" & $i &".jpg")
    Guictrlsetdata($Progress1,$i)
    Next
    EndSwitch
    WEnd

    [/autoit]


    sollte funktionieren
    Naja ist halt jz von den Bildern abhängig nicht von den Bytes ^^

  • so hier? Ist aber mit sicherheit nicht die "geschmeidigste Variante"

    Spoiler anzeigen
    [autoit]

    $Form1 = GUICreate("Downloader", 242, 136, 192, 124)
    $Button1 = GUICtrlCreateButton("Download", 80, 80, 75, 25)
    $Progress1 = GUICtrlCreateProgress(40, 24, 150, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $Button1
    Dim $download[10]
    Global $aSize[10], $aGotSize[10], $Size = 0, $GotSize=0
    For $i = 0 To UBound($download)-1
    $aSize[$i] = InetGetSize("http://www.autoitscript.com/images/autoit_6_240x100.jpg")
    $Size += $aSize[$i]
    Next
    MsgBox(0, "Gesamt", $Size & " Bytes")
    For $i = 0 To UBound($download)-1
    $download[$i] = InetGet("http://www.autoitscript.com/images/autoit_6_240x100.jpg", "Download\logo" & $i & ".jpg")
    $GotSize += $aSize[$i]
    GUICtrlSetData($Progress1, ($GotSize / $Size)*100)
    Next
    MsgBox(0,"","Fertig")
    EndSwitch
    WEnd

    [/autoit]
  • @Calypso

    Sry hatte ich nicht gesehen :( .
    Funktioniert aber leider nicht.
    Bei dem Beispiel funktioniert es, aber nicht bei meinem Bild.
    Das Script ist für 4 sec in der Tray Leiste und dann gehts aus,
    Weis leider nicht warum.
    Vlt ist ein Bild dafür zu klein?

    SEuBo

    Danke,
    funktioniert so wie ich das wollte ;) .

    Ne geschmeidigere Lösung wäre aber auch nicht verkehrt.
    Also wenn jemand eine eine kennt, blos raus damit :D .


    MfG

    Bladerunner

    4 Mal editiert, zuletzt von Bladerunner85 (13. Dezember 2009 um 20:11)