Jump to content

how to pause and resume the download in InetGet function


Recommended Posts

Hello
Can we pause and resume the download in the InetGet function?
If is possible, what is the solution please?
I used this code To manage the download

#include <INet.au3>
func _downloader($name, $linc, $filepath, $RTLF = false, $link = false)
    global $downloader = GUICreate("downloader", 400, 200, -1, -1, $WS_CLIPCHILDREn, $RTLF, $link)
    global $path = $filePath
$labelTxt = GUICtrlCreateLabel("downloading " & $name, 50, 10, 200, 20)
global $labelTxt0 = GUICtrlCreateLabel("downloaded size 0 MB " & "OF 0 MB", 50, 60, 300, 20)
global $Progress = ""
global $sText = ""
    For $i = 1 To Random(5, 20, 1) ; Return an integer between 5 and 20 to determine the length of the string.
        $sText &= Chr(Random(65, 122, 1)) ; Return an integer between 65 and 122 which represent the ASCII characters between a (lower-case) to Z (upper-case).
next
global $labelTxt2 = GUICtrlCreateInput("0%", 50, 80, 50, 20)
_GUICtrlEdit_SetReadOnly(-1, true)
GUIStartGroup("")
global $beep = GUICtrlCreateCheckBox("use the progress beep notification", 150, 120, 200, 20)
GUIStartGroup("")
$button = GUICtrlCreateButton("Cancel', 130, 150, 180, 25, 0x01)
$iIndex = 0
global $Target
global $url
GUIStartGroup("")
global $Progress = GUICtrlCreateProgress(50, 90, 150, 20)
global $Target = $filepath
global $url = $linc
global $path = $filepath
global $hDownloadNo = _RSMWare_GetData($url, $Target)
global $status = false
AdlibRegister("SetProgress")
global $onprogress = false, $curent = false
GUISetState(@sw_Show)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $button
$asc = MsgBox(4132,"exit download?","if you click yes the downloading will be cancel, do you want to cancel it ?")
if $asc = 6 then
AdlibUnRegister("SetProgress")
GUIDelete()
    If $hDownloadNo <> 0 Then InetClose($hDownloadNo)
exitLoop
endIf
EndSwitch
if $status = -1 then
$status = 0
$hDownloadNo = _RSMWare_GetData($url, $Target)
$onprogress = false
$curent = false
elseIf $Status = 1 then
$status = $path
GUIDelete()
AdlibUnRegister("SetProgress")
exitLoop
endIf
WEnd
return $status
endFunc
Func _RSMWare_GetData($url, $Target)
Local $hDownload = InetGet($url, $Target, 1, 1)
Return $hDownload
EndFunc ;==>_RSMWare_GetData
    Func SetProgress()
Local $state
If $hDownloadNo <> 0 Then
$state = InetGetInfo($hDownloadNo)
If @error = 0 Then
$infor = "downloaded size " & Round(Execute(InetGetInfo($hDownloadNo, $INET_DOWNLOADREAD) / 1048576), 2) & " MB of " & Round(Execute(InetGetInfo($hDownloadNo, $INET_DOWNLOADSIZE) / 1048576), 2) & " MB "
$onprogress = Round(Ceiling(($state[0] / $state[1]) * 100))
if not (InetGetInfo($hDownloadNo, $INET_DOWNLOADSIZE) = 0) then
if $onProgress <= 0 then $onProgress = 0
GUICtrlSetData($Progress, $onProgress)
GUICtrlSetData($labelTxt0, $infor)
GUICtrlSetData($labelTxt2, $onProgress & "%")
if _isChecked($beep) then
if $onprogress > $curent then
beep((100 + $onprogress * 20), 100)
$curent = $onprogress
endIf
endIf
endIf
If $state[2] Then
If $state[3] Then
InetClose($hDownloadNo)
$status = 1
else
InetClose($hDownloadNo)
$status = -1
endIf
endIf
EndIf
endIf
EndFunc ;==>SetProgress

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...