InetGet и ProgressOn

Ответить
 • Просмотры: 1
Аватара пользователя
sincolinum

InetGet и ProgressOn

Сообщение sincolinum »

В справке к AutoIt есть пример для скачивания файла из интернета




читать дальше »




Код:

Код: Выделить всё

#include 
#include 
; Download a file in the background.
; Wait for the download to complete.
Example()
Func Example()
    ; Save the downloaded file to the temporary folder.
    Local $sFilePath = _WinAPI_GetTempFileName(@TempDir)
    ; Download the file in the background with the selected option of 'force a reload from the remote site.'
    Local $hDownload = InetGet("http://www.autoitscript.com/autoit3/files/beta/update.dat", $sFilePath, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
    ; Wait for the download to complete by monitoring when the 2nd index value of InetGetInfo returns True.
    Do
        Sleep(250)
    Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)
    ; Retrieve the number of total bytes received and the filesize.
    Local $iBytesSize = InetGetInfo($hDownload, $INET_DOWNLOADREAD)
    Local $iFileSize = FileGetSize($sFilePath)
    ; Close the handle returned by InetGet.
    InetClose($hDownload)
    ; Display details about the total number of bytes read and the filesize.
    MsgBox($MB_SYSTEMMODAL, "", "The total download size: " & $iBytesSize & @CRLF & _
            "The total filesize: " & $iFileSize)
    ; Delete the file.
    FileDelete($sFilePath)
EndFunc   ;==>Example





Подскажите пожалуйста, как сделать так, чтобы во время скачивания файла появлялся "ProgressOn" от 0% до 100% или размер файла в цифрах по мере его скачивания




читать дальше »




Код:

Код: Выделить всё

Example()
Func Example()
    ; Display a progress bar window.
    ProgressOn("Progress Meter", "Increments every second", "0%")
    ; Update the progress value of the progress bar window every second.
    For $i = 10 To 100 Step 10
        Sleep(1000)
        ProgressSet($i, $i & "%")
    Next
    ; Set the "subtext" and "maintext" of the progress bar window.
    ProgressSet(100, "Done", "Complete")
    Sleep(5000)
    ; Close the progress window.
    ProgressOff()
EndFunc   ;==>Example





Как бы это скомбинировать ?
Аватара пользователя
Iska

Re: InetGet и ProgressOn

Сообщение Iska »

Ну, например:



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

#include 
Example()
Func Example()
	Local $sUrl       = "https://download.sysinternals.com/files/ProcessExplorer.zip"
	Local $sFilePath  = @ScriptDir & "\ProcessExplorer.zip"
	Local $lTotalSize = InetGetSize($sUrl, $INET_FORCERELOAD)
	Local $dCurrentPercent
	Local $hDownload  = InetGet($sUrl, $sFilePath, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
	ProgressOn($sUrl, "Download progress", "0%")
	Do
		Sleep(250)
		$dCurrentPercent = InetGetInfo($hDownload, $INET_DOWNLOADREAD) / $lTotalSize * 100
		ProgressSet($dCurrentPercent, StringFormat("%.2f", $dCurrentPercent) & "%")
	Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)
	Local $iBytesSize = InetGetInfo($hDownload, $INET_DOWNLOADREAD)
	Local $iFileSize  = FileGetSize($sFilePath)
	InetClose($hDownload)
	ProgressSet(100, "The total download size: " & $iBytesSize & @CRLF & "The total filesize: " & $iFileSize, "Complete")
	Sleep(3000)
	ProgressOff()
EndFunc







В реальности пользоваться приведёнными Вами примерами нельзя — надо ещё проверять возможные ошибки.
Аватара пользователя
sincolinum

Re: InetGet и ProgressOn

Сообщение sincolinum »

Скачал файл намного большего размера и ошибок не наблюдал.



Спасибо за помощь.
Аватара пользователя
sincolinum

Re: InetGet и ProgressOn

Сообщение sincolinum »

Цитата sincolinum:



и ошибок не наблюдал.
InetGet и ProgressOn




Отключите, например, соединение во время загрузки.
Ответить

Вернуться в «AutoIt»