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.
Fortschrittsleiste pro gedownloadteten Byte fortsetzen.
-
- [ offen ]
-
Ninjasturm -
4. August 2010 um 17:38 -
Geschlossen -
Erledigt
-
-
Hi Ninjasturm,
[autoit]
benutze statt InetRead, InetGet. Ich habe dir mal ein Beispiel gemacht$sPath = "http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe"
[/autoit][autoit][/autoit][autoit]
$hInet = InetGet($sPath, "autoit-v3-setup.exe", 1, 1)
$Size = InetGetSize($sPath)ProgressOn("Download", "Fortschritt", "autoit-v3-setup.exe")
[/autoit]
Do
ProgressSet(Int((InetGetInfo($hInet, 0) * 100) / $Size))
Sleep(200)
Until InetGetInfo($hInet, 2)
InetClose($hInet) -
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
-
Ja stimmt. Danke für die hilfreiche Antwort
-
PS: Das kann man alles mit InetGetInfo machen:
[autoit]$sPath = "http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe"
[/autoit][autoit][/autoit][autoit]
$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; Größe holen
[/autoit][autoit][/autoit][autoit]
$Size = InetGetInfo($hInet, 1)
If $Size < 1 Then
If not InetGetInfo($hInet, 2) Then $Size = InetGetSize($sPath)
if $Size < 1 Then $Size = -1
EndIfDo
[/autoit]
$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)