- Сообщения
- 8,671
- Репутация
- 2,481
- Версия AutoIt
- 3.3.12.0
- Версия
- 0.1
Описание:
Библиотека предназначена для скачивании файлов с расширенными возможностями (тема зарождения идеи).
Данная библиотека изначально задумывалась как альтернатива встроенным функциям Inet*, с возможностью ставить закачку на паузу.
Но в процессе её развития была также реализована поддержка callback-функции, и другие возможности.
Смежная теме: TCPInet - Альтернатива Inet* с расширенными возможностями
Примечания:
* Используйте асинхронный режим (background) с осторожностью, одновременная закачка многих файлов может привести к большому потреблению памяти.
Примеры:
Файл: InetEx.zip
Снимок:
История версий:
Спасибо: Yashied за существенный вклад в развитие библиотеки и за пример
Библиотека предназначена для скачивании файлов с расширенными возможностями (тема зарождения идеи).
Данная библиотека изначально задумывалась как альтернатива встроенным функциям Inet*, с возможностью ставить закачку на паузу.
Но в процессе её развития была также реализована поддержка callback-функции, и другие возможности.
Смежная теме: TCPInet - Альтернатива Inet* с расширенными возможностями
Примечания:
* Используйте асинхронный режим (background) с осторожностью, одновременная закачка многих файлов может привести к большому потреблению памяти.
Примеры:
Простой:
Продвинуты пример (от Yashied) есть в архиве.
Код:
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include 'InetEx.au3'
$sPath = @DesktopDir
$sURL1 = 'https://www.autoitscript.com/autoit3/files/beta/autoit/archive/autoit-v3.3.13.19.zip'
$sURL2 = 'http://svn2.assembla.com/svn/anthraxinteractive/encrpytion/emdll/au3src/src/AutoIt.cpp'
$hGUI = GUICreate('InetEx.au3 UDF Simple Example', 400, 100)
GUICtrlCreateLabel(StringRegExp($sURL1, '([^/]+)$', 3)[0] & ' [MEMORY]', 10, 20, 200, 20)
$iLabel1 = GUICtrlCreateLabel('', 230, 20, 100, 20)
GUICtrlCreateLabel(StringRegExp($sURL2, '([^/]+)$', 3)[0], 10, 40, 200, 20)
$iLabel2 = GUICtrlCreateLabel('', 230, 40, 100, 20)
$iPause_Bttn = GUICtrlCreateButton('Pause', (300 / 2) - 35, 70, 70, 20)
GUISetState(@SW_SHOW, $hGUI)
$hInet1 = _InetEx_GetFile($sURL1, '', True, $INETEX_DOWNLOADBACKGROUND) ;Download to memory
$hInet2 = _InetEx_GetFile($sURL2, $sPath, True, $INETEX_DOWNLOADBACKGROUND)
$fCheckInfo = True
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_InetEx_Close($hInet1)
_InetEx_Close($hInet2)
Exit
Case $iPause_Bttn
$iState = True
$sText = 'Resume'
If GUICtrlRead($iPause_Bttn) <> 'Pause' Then
$iState = False
$sText = 'Pause'
EndIf
GUICtrlSetData($iPause_Bttn, $sText)
_InetEx_Pause($hInet1, $iState)
_InetEx_Pause($hInet2, $iState)
EndSwitch
If $fCheckInfo Then
If _InetEx_GetInfo() > 0 Then
_SetLabelProgress($hInet1, $iLabel1)
_SetLabelProgress($hInet2, $iLabel2)
Else
$fCheckInfo = False
EndIf
EndIf
WEnd
Func _SetLabelProgress($hInet, $iLabel)
Local $aInfo = _InetEx_GetInfo($hInet, -1)
If @error Or $aInfo[$INETEX_DOWNLOADREAD] = 0 Or $aInfo[$INETEX_DOWNLOADPAUSED] Then
Return
EndIf
Local $sProgress = (Floor($aInfo[$INETEX_DOWNLOADREAD] / $aInfo[$INETEX_DOWNLOADSIZE] * 1000) / 10) & '%'
If GUICtrlRead($iLabel) <> $sProgress Then
GUICtrlSetData($iLabel, $sProgress)
EndIf
If $aInfo[$INETEX_DOWNLOADCOMPLETE] Then
If $aInfo[$INETEX_DOWNLOADMEMORY] Then
Local $hProcess = _WinAPI_GetCurrentProcess()
Local $stBuffer = DllStructCreate('byte[' & $aInfo[$INETEX_DOWNLOADREAD] & ']')
Local $iRead = 0
_WinAPI_ReadProcessMemory($hProcess, $aInfo[$INETEX_DOWNLOADMEMORY], DllStructGetPtr($stBuffer), DllStructGetSize($stBuffer), $iRead)
Local $bMemory = DllStructGetData($stBuffer, 1)
If BinaryLen($bMemory) Then
Local $hFile = FileOpen($sPath & '\' & StringRegExp($aInfo[$INETEX_DOWNLOADURL], '([^/]+)$', 3)[0], 2 + 16)
FileWrite($hFile, $bMemory)
FileClose($hFile)
$bMemory = 0
EndIf
EndIf
_InetEx_Close($hInet)
GUICtrlSetData($iLabel, 'Completed')
EndIf
EndFunc
Продвинуты пример (от Yashied) есть в архиве.
Файл: InetEx.zip
Снимок:
История версий:
v0.1
* Первая публичная версия
* Первая публичная версия
Спасибо: Yashied за существенный вклад в развитие библиотеки и за пример
- Автор
- G.Sandler (CreatoR)
- Источник
- Ссылка на источник
Вложения
Последнее редактирование: