Da viele bei AutoIt immer rummeckern, dass bei Vista/7 InetGet soviel rumspinnt,
hab ich mich mal an eine gescheite UDF fürs downloaden gesetzt. In der UDF
ist eig alles erklärt, daher brauch ich hier im Thread nicht viel dazu sagen.
Man kann die Downloaddaten (% und Geschwindigkeit) entweder per GUI-Objekt
oder Progress anzeigen lassen, genaueres in der UDF, außerdem ist ein Beispiel
dabei.
Viel Spaß beim anschauen/nutzen.
Download: Mirror 1, Mirror 2, Mirror 3
LG Dawn.
Quelltext only
Source
Alles anzeigen
OT: Unbanned yay, Taser du bistn NOOB.
hab ich mich mal an eine gescheite UDF fürs downloaden gesetzt. In der UDF
ist eig alles erklärt, daher brauch ich hier im Thread nicht viel dazu sagen.
Man kann die Downloaddaten (% und Geschwindigkeit) entweder per GUI-Objekt
oder Progress anzeigen lassen, genaueres in der UDF, außerdem ist ein Beispiel
dabei.
Viel Spaß beim anschauen/nutzen.
Download: Mirror 1, Mirror 2, Mirror 3
LG Dawn.
Quelltext only
Quellcode
- Func _download ($url, $savepath, $handle = False, $label = "", $overwrite = 1)
- $bytes = InetGetSize ($url)
- $sec1 = @SEC
- $sec2 = @SEC
- $sec3 = @SEC
- $sec4 = @SEC
- $dl_proc = 0
- $old_calc = 0
- $speed = "Wird berechnet"
- $stop = False
- If FileExists ($savepath) Then
- If $overwrite = 1 Then
- FileDelete ($savepath)
- Else
- $stop = True
- EndIf
- EndIf
- If $bytes = 0 Then
- Return 2
- ElseIf $stop = True Then
- Return 3
- Else
- $main = InetGet ($url, $savepath, 0, 1)
- $info = InetGetInfo ($main)
- If $handle = False Then
- $progress = ProgressOn ("Download", "Download wurde gestartet!")
- Else
- GUICtrlSetData ($handle, 0)
- EndIf
- Do
- $info = InetGetInfo ($main)
- $calc = Round ($info[0] / ($bytes /100))
- $sec1 = @SEC
- If $sec1 <> $sec2 Then
- #cs ### only works on XP ###
- $size = FileGetSize ($savepath)
- $speed = ($size - $dl_proc) / 1024
- $dl_proc = $size
- #ce ### only works on XP ###
- $speed = ($info[0] - $dl_proc) / 1024
- $dl_proc = $info[0]
- $sec2 = @SEC
- EndIf
- If $handle = False Then
- If $old_calc <> $calc Then
- $old_calc = $calc
- ProgressSet ($calc, "Download wurde zu " & $calc & "% abgeschlossen." & @CRLF & "Aktuelle Downloadgeschwindigkeit: " & $speed & "kb/s.")
- EndIf
- Else
- $sec3 = @SEC
- If $sec3 <> $sec4 Then
- $sec4 = @SEC
- GUICtrlSetData ($label, "Download wurde zu " & $calc & "% abgeschlossen." & @CRLF & "Aktuelle Downloadgeschwindigkeit: " & $speed & "kb/s.")
- EndIf
- GUICtrlSetData ($handle, $calc)
- EndIf
- Until $info[2] = True
- If $handle = False Then
- ProgressOff ()
- Else
- GUICtrlSetData ($label, "Download wurde erfolgreich abgeschlossen!")
- EndIf
- Return 1
- EndIf
- EndFunc
OT: Unbanned yay, Taser du bistn NOOB.