Downloader mit Checkbox (Problem)

  • Hallo alle zusammen!
    Ich habe ein kleines problem, ich habe ein downloader gemacht mit einem progressbar der die dateien runterladen soll die man in den Checkbox auswählen kann.

    Hier das script:

    [autoit]


    #include <StaticConstants.au3>
    #include <GDIpProgress.au3>
    Global $FilesToDownload[2] = ["http://download.piriform.com/ccsetup223.exe", "http://download.piriform.com/dfsetup113.exe"]
    Global $Downloads = UBound($FilesToDownload)
    Global $DownloadDir = @DesktopDir & "/TestDownloads"
    GUICreate("Downloader", 495, 326, 212, 157)
    GUISetBkColor(0x808080)
    $Progress1 = GUICtrlCreateProgress(20, 180, 457, 41)
    $Progress2 = GUICtrlCreateProgress(999, 0, 0, 0)
    $StatLab = GUICtrlCreateLabel("",21,160,262,15)
    $StatLab2 = GUICtrlCreateLabel("",335,160,150,15)
    GUISetState(@SW_SHOW)
    $Button = GUICtrlCreateButton("Herunterladen Beginnen", 16, 260, 209, 57, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Beenden", 280, 260, 201, 57, $WS_GROUP)
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 64, 24, 129, 25)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 64, 56, 81, 25)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button2
    Exit
    Case $Button
    DirCreate (@DesktopDir & "/TestDownloads")
    If Not _Download() Then
    GUICtrlSetData($Progress1,0)
    GUICtrlSetData($Progress2,0)
    GUICtrlSetState($Button,$GUI_DISABLE)
    GUICtrlSetData($Button,"Herunterladen Abgebrochen")
    Sleep(1500)
    GUICtrlSetData($Button,"Erneut Herunterladen")
    GUICtrlSetState($Button,$GUI_ENABLE)
    Else
    GUICtrlSetData($Button,"Erneut Herunterladen")
    GUICtrlSetData($StatLab,"Vollständig")
    GUICtrlSetData($StatLab2,"Erfolgreich Heruntergeladen")
    MsgBox(5244352,"Vollständig Heruntergeladen","Erfolgreich heruntergeladen, die datein wurden in den ordner TestDownloads auf deinem Desktop gespeichert.")
    EndIf
    EndSwitch
    WEnd
    Func _Download()
    Local $i,$iSize,$iBuf,$msg,$iProz,$iOldProz,$sFileName
    GUICtrlSetData($Button,"Abbrechen")
    For $i = 0 To $Downloads - 1
    $iSize = InetGetSize($FilesToDownload[$i])
    $sFileName = StringTrimLeft($FilesToDownload[$i],StringInStr($FilesToDownload[$i],"/",1,-1))
    InetGet($FilesToDownload[$i],$DownloadDir&"\"&$sFileName,0,1)
    GUICtrlSetData($StatLab,"Herunterladen: "&$sFileName &" (0%)")
    While @InetGetActive
    $msg = GUIGetMsg()
    If $msg = $Button Then Return InetGet("abort")-1
    $iProz = Round(100*@InetGetBytesRead/$iSize)
    If $iProz <> $iOldProz Then
    $iOldProz = $iProz
    GUICtrlSetData($Progress1,$iProz)
    GUICtrlSetData($Progress2,$iBuf+($iProz/$Downloads))
    GUICtrlSetData($Button,"Abbrechen")
    GUICtrlSetData($StatLab2,"Insgesammter Fortschritt: "&Round($iBuf+($iProz/$Downloads))&"%")
    GUICtrlSetData($StatLab,"Herunterladen: "&$sFileName &" ("&$iProz&"%)")
    EndIf
    Sleep(1)
    WEnd
    $iBuf += (100/$Downloads)
    Next
    Return 1
    EndFunc

    [/autoit]

    Nun zum beispiel wird hier CCleaner und Defraggler heruntergeladen.
    Nun wollte ich z.B. oben dass man auswählen kann welches man runter laden will oder beides...
    Checkbox1 = Deffragler
    Checkbox2 = CCleaner

    Ok ich weiss blöde frage aber wie kriege ich nun diesen skript hin das mit diesen checkboxen und das auch der progressbar nacher immernoch läuft.
    Denn ich kriege es einfach nicht hin dieses Global $FilesToDownload[2] = ["http://download.piriform.com/ccsetup223.exe", "http://download.piriform.com/dfsetup113.exe"]
    von der checkbox richtig bearbeiten zu lassen.... Hab zwar schon vieles gelesen in der hilfe datei doch leider klappt es einfach nicht :(
    Könnte mir einer helfen ohne links zu geben die zum schluss zum gleichen ergebniss führen. Ich weiss so ungefähr wie mann die checkbox ausliest doch nicht wie man diese $FilesToDownload richtig bearbeitet mit den checkboxen.

    Sry, ist nicht lange her das ich mit autoit arbeite...


    Danke im voraus.

    4 Mal editiert, zuletzt von kartalBBBB (13. September 2009 um 18:13)

  • also ich weiß nich ob es dir was hilft aber mit fileinstall könntest du dir die ganze runterladerei sparen.
    bei 2 so kleinen installern, 4 mb oder was die haben werden ist es vllt ne ganz gute alternative

  • Leider heisst es downloader und es geht um einen downloader, und ccleaner & defraggler dienen nur als beispiel, es geht um was anderes wo man viel von verschiedenen links ladet! Also brauche ich dieses auswähl funktion... :( Aber trozdem danke!

  • Hallo
    ich würde es ja so machen:

    [autoit]

    If $Checkbox1 = $IsChecked Then ;Bin mir nich so sicher ob das $IsChecked war. Hauptsache sollst du prüfen ob die Checkbox geklickt wurde.
    INetGet ("...Pfad zu Exe...", @TempDir&"\ccleaner.exe")
    Elseif $Checkbox2 = $IsChecked Then
    INetGet ("...Pfad zu Exe...", @TempDir&"\fraggler.exe")
    EndIf

    [/autoit]
  • Hallo kartalBBBB,

    du solltest dein Skript zuallererst mal auf einen Stand bringen der sich auch kompilieren lässt. Ich erhalte folgende Fehlermeldungen:


    Desweiteren solltest du in deinem Post die Spoiler- und AutoIt-Tags verwenden,

    mfg (Auto)Bert

  • Es funktionier bei mir, irgendwas muss da fehlen!
    Ich hab mein post das script kopiert und in autoit rein und es geht ohne fehler!
    Villeicht fehlt das: GDIpProgress

    Habe es mal angehängt!


    Edit:
    Ich glaube es gelöst zu haben!! Es hat funktioniert, auch wenn Insgesammter Fortschritt nun nichtmehr richtig funktioniert kann mann nun auswählen.

    [autoit]


    Global $FilesToDownload[2] = [""]

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

    Case $Button ;ist der start button/
    ;Das habe ich zu Case $Button hinzugefügt(Es geht unten weiter, ich habe aber nur das was ich neu rein gemacht habe geschrieben)

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

    If guictrlRead($Checkbox1) = $GUI_CHECKED Then ;Es wird überprüft ob ein haken drin oder nicht drin ist
    $CC = "http://download.piriform.com/ccsetup223.exe" ; Wenn es gecheckt ist geben wir ihn seinen link ;)
    Else
    $CC = "" ; Falls es nicht gecheckt ist wird $CC (CCleaner) auf nichts gesetzt somit ladet er nichts runter.
    EndIf

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

    If guictrlRead($Checkbox2) = $GUI_CHECKED Then ; Das gleiche nochmal, nun für Defraggler
    $DF = "http://download.piriform.com/dfsetup113.exe"
    Else
    $DF = ""
    EndIf

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

    Global $FilesToDownload[2] = [$CC, $DF]; Die dateien die runtergeladen werden sollen werden nochmal neu gesetzt. Wenn nun CCleaner nicht gecheckt wurde dann wird hinter CCleaner ($CC) = "" gesetzt somit wird es nicht runtergeladen.

    [/autoit]

    3 Mal editiert, zuletzt von kartalBBBB (13. September 2009 um 18:14)