Hi,
mit der Anregung von diesem Thread habe ich eine kleine UDF erstellt um Geschwindigkeit von Down oder Uploads zu regulieren.
Die UDF
Spoiler anzeigen
Global $__SpeedCtrl_Timer = 0
Global $__SpeedCtrl_SleepTime = 0
Global $__SpeedCtrl_Speed = 0
; #FUNCTION# ======================================================================================
; Name ..........: _SpeedCtrl_Start()
; Description ...: Initialisiert die Bandbreitenbeschränkung
; Syntax ........: _SpeedCtrl_Start($iSpeed)
; Parameters ....: $iSpeed - Speed in Kb/s
; Return values .: Failure: -1
; Author ........: Sprenger120
; =================================================================================================
Func _SpeedCtrl_Start($iSpeed)
If $__SpeedCtrl_Timer <> 0 Then Return SetError(1, 0, -1)
$__SpeedCtrl_Timer = TimerInit()
$__SpeedCtrl_SleepTime = 0
$__SpeedCtrl_Speed = $iSpeed
EndFunc
; #FUNCTION# ======================================================================================
; Name ..........: _SpeedCtrl_Regulate()
; Description ...: Reguliert die Bandbreite der Aktion
; Syntax ........: _SpeedCtrl_Regulate($sAkPos)
; Parameters ....: $sAkPos - Aktueller Fortschritt (in Bytes)
; Return values .: Success: Aktueller Speed in Kb/s
; Failure: -1
; Author ........: Sprenger120
; =================================================================================================
Func _SpeedCtrl_Regulate($sAkPos)
If Not IsInt($sAkPos) Then Return SetError(1, 0, -1)
$_Fort = Int(($sAkPos / (TimerDiff($__SpeedCtrl_Timer) / 1000)) / 1024)
If $_Fort < $__SpeedCtrl_Speed Then ; Zu kleiner Speed
$__SpeedCtrl_SleepTime -= 5
ElseIf $_Fort > $__SpeedCtrl_Speed Then ; Zu großer Speed
$__SpeedCtrl_SleepTime += 5
EndIf
Sleep($__SpeedCtrl_SleepTime)
[/autoit] [autoit][/autoit] [autoit]If $__SpeedCtrl_SleepTime < 0 Then $__SpeedCtrl_SleepTime = 0
Return $_Fort
EndFunc
; #FUNCTION# ======================================================================================
; Name ..........: _SpeedCtrl_Clear()
; Description ...: Leer die benutzten Ressourcen
; Syntax ........: _SpeedCtrl_Clear()
; Author ........: Sprenger120
; =================================================================================================
Func _SpeedCtrl_Clear()
$__SpeedCtrl_Timer = 0
$__SpeedCtrl_SleepTime = 0
$__SpeedCtrl_Speed = 0
EndFunc
; #FUNCTION# ======================================================================================
; Name ..........: _SpeedCtrl_SetSpeed()
; Description ...: Setzt die Maximale Bandbreite der Aktion
; Syntax ........: _SpeedCtrl_SetSpeed($iSpeed)
; Parameters ....: $iSpeed - Speed in Kb/s
; Author ........: Sprenger120
; =================================================================================================
Func _SpeedCtrl_SetSpeed($iSpeed)
$__SpeedCtrl_Speed = $iSpeed
EndFunc
Ein Beispiel (Bitte $sPath anpassen)
Spoiler anzeigen
#include "SpeedRegu.au3"
$sPath = @ScriptDir & "\CCC.mpg" ; Bitte anpassen
$hFile = FileOpen($sPath, 16)
$hDest = FileOpen(@ScriptDir & "\CCC_1.mpg", 1)
_SpeedCtrl_Start(500)
$x = 0
While 1
$read = FileRead($hFile, 1024)
If @error Then ExitLoop
$tmp = _SpeedCtrl_Regulate(FileGetPos($hFile))
If $x = 10 Then
ConsoleWrite($tmp & @CRLF)
$x = 0
Else
$x += 1
EndIf
FileWrite($hDest, $read)
WEnd
FileClose($hDest)
FileClose($hFile)