Enregistre la fonction de rappel que les fonctions WinINet peuvent appeler pour représenter la progression d'une opération
#include <FTPEx.au3>
_FTP_SetStatusCallback ( $hInternetSession, $sFunctionName )
$hInternetSession | Handle retourné par _FTP_Open() |
$sFunctionName | Le nom de la fonction définie par l'utilisateur à appeler. |
Succès: | Retourne un pointeur vers la fonction callback. |
Échec: | Retourne 0 et définit @error <> 0. |
La fonction de rappel est appelée avec les paramètres suivants (voir InternetStatusCallback de l'API Windows) :
$hInternet, $iContext, $iInternetStatus, $pStatusInformation, $iStatusInformationLength
_FTP_Command, _FTP_Connect, _FTP_DecodeInternetStatus, _FTP_DirPutContents, _FTP_FileGet, _FTP_FileOpen, _FTP_FilePut, _FTP_FindFileFirst, _FTP_ListToArray, _FTP_ListToArray2D, _FTP_ListToArrayEx, _FTP_Open
Consultez InternetSetStatusCallback dans la librairie MSDN.
#include <Debug.au3> #include <FTPEx.au3> #include <WinAPIHOBj.au3> #include <WinAPIMem.au3> _DebugSetup(StringTrimRight(@ScriptName, 4) & 'example', True) Local $sServer = 'ftp.mozilla.org' Local $sUsername = '' Local $sPass = '' Local $hOpen = _FTP_Open('MyFTP Control') Local $pCallback = _FTP_SetStatusCallback($hOpen, 'FTPStatusCallbackHandler') Local $hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sPass, 0, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0, $pCallback) Local $iFtpc = _FTP_Close($hConn) Local $iFtpo = _FTP_Close($hOpen) Func FTPStatusCallbackHandler($hInternet, $iContext, $iInternetStatus, $pStatusInformation, $iStatusInformationLength) #forceref $hInternet, $iContext If $iInternetStatus = $INTERNET_STATUS_REQUEST_SENT Or $iInternetStatus = $INTERNET_STATUS_RESPONSE_RECEIVED Then Local $iBytesRead Local $tStatus = DllStructCreate('dword') _WinAPI_ReadProcessMemory(_WinAPI_GetCurrentProcess(), $pStatusInformation, $tStatus, $iStatusInformationLength, $iBytesRead) _DebugOut(_FTP_DecodeInternetStatus($iInternetStatus) & ' | Size = ' & DllStructGetData($tStatus, 1) & ' Bytes Bytes read = ' & $iBytesRead) Else _DebugOut(_FTP_DecodeInternetStatus($iInternetStatus)) EndIf EndFunc ;==>FTPStatusCallbackHandler