Fortschrittsleiste pro gedownloadteten Byte fortsetzen.

  • Hallo Com,


    ich habe mir heute einen Launcher für mein C++ Game(Noch nicht fertig) gebastelt.
    Dort habe ich 2 Processbars. Die eine für den Fortschritt des Downloads für die Datei die andere
    den Gesamtfortschritt. Nun möchte ich eine Datei Downloaden ich weis das das mit der
    Funktion InetRead funktioniert. Nun möchte ich aber das das Script die Datefortschrittsleiste um 1% pro weiter bewegt wen die Datei um einen 1% heruntergeladen wurde.Könntet ihr mir vielleicht ein paar Tipps zur Umsetzung geben.


    Danke im Voraus. :thumbup:

  • Hi Ninjasturm,
    benutze statt InetRead, InetGet. Ich habe dir mal ein Beispiel gemacht

    [autoit]

    $sPath = "http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe"
    $hInet = InetGet($sPath, "autoit-v3-setup.exe", 1, 1)
    $Size = InetGetSize($sPath)

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

    ProgressOn("Download", "Fortschritt", "autoit-v3-setup.exe")
    Do
    ProgressSet(Int((InetGetInfo($hInet, 0) * 100) / $Size))
    Sleep(200)
    Until InetGetInfo($hInet, 2)
    InetClose($hInet)

    [/autoit]
  • Danke ich hoffe es funktioniert.

    Ich habe auch auf deinen Schulterglatze Account gespendet

  • Aber noch eine Frage habe ich warum passiert der Download 200 Millisekunden nach jedem Schleifendurchgang ?(

  • Der Download pausiert nicht, aber die Anzeige. Ein Sleep ist nötig. dass die CPU-Auslastung geringer ist und die 200, damit es nicht flaackert. Das müsste doch reichen ... etwa 5x progressbar aktualisieren pro Sekunde ;)

  • PS: Das kann man alles mit InetGetInfo machen:

    [autoit]

    $sPath = "http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe"
    $hInet = InetGet($sPath, "autoit-v3-setup.exe", 1, 1)
    ProgressOn("Download", "autoit-v3-setup.exe", "Warte auf Beginn", -1, -1, 16)
    While Not (InetGetInfo($hInet, 0) or InetGetInfo($hInet, 2) ) ; auf Start warten
    Sleep(10)
    WEnd

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

    ; Größe holen
    $Size = InetGetInfo($hInet, 1)
    If $Size < 1 Then
    If not InetGetInfo($hInet, 2) Then $Size = InetGetSize($sPath)
    if $Size < 1 Then $Size = -1
    EndIf

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

    Do
    $bts= InetGetInfo($hInet, 0)
    If $Size = -1 Then
    ProgressSet(50, "Fortschritt: ??% ("&$bts&" / ?? bytes)")
    Else
    $per = Int($bts/$Size*100)
    ProgressSet($per, "Fortschritt: "&$per&"% ("&$bts&" / "&$Size & ' bytes)')
    EndIf
    Sleep(200)
    Until InetGetInfo($hInet, 2)
    $bts= InetGetInfo($hInet, 0)
    ProgressSet(100, "Fortschritt: 100% ("&$bts&' bytes)')
    If Not InetGetInfo($hInet, 3) Then MsgBox(0x40000, 'Fehler', 'Nummer: ' & InetGetInfo($hInet, 4))
    Sleep(1000)
    InetClose($hInet)

    [/autoit]