0/5 (8 avis)
Vue 17 528 fois - Téléchargée 1 824 fois
Option Explicit Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" _ (ByVal Agent As String, ByVal access As Long, ByVal proxy As String, _ ByVal bypass As String, ByVal flags As Long) As Long Private Declare Function InternetConnect Lib "wininet" Alias "InternetConnectA" _ (ByVal handle As Long, ByVal server As String, ByVal port As Long, _ ByVal user As String, ByVal password As String, ByVal services As Long, _ ByVal flags As Long, ByVal context As Long) As Long Private Declare Function InternetCloseHandle Lib "wininet" (ByVal handle As Long) As Long Const MAX_PATH = 260 Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type Private Declare Function FtpFindFirstFile Lib "wininet" Alias "FtpFindFirstFileA" _ (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, _ lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContext As Long) As Long Private Declare Function InternetFindNextFile Lib "wininet" Alias "InternetFindNextFileA" _ (ByVal hFtpSession As Long, lpFindFileData As WIN32_FIND_DATA) As Boolean Private Declare Function FtpSetCurrentDirectory Lib "wininet" Alias _ "FtpSetCurrentDirectoryA" (ByVal handle As Long, ByVal directory As String) As Long Private Declare Function FtpGetFile Lib "wininet" Alias "FtpGetFileA" _ (ByVal handle As Long, ByVal remotefile As String, ByVal localfile As String, _ ByVal ifexits As Long, ByVal attributes As Long, ByVal flags As Long, _ ByVal context As Long) As Long Const INTERNET_OPEN_TYPE_PRECONFIG As Long = 0 Const INTERNET_DEFAULT_PORT As Long = 21 Const INTERNET_INVALID_PORT_NUMBER As Long = 0 Const INTERNET_CONNECT_FLAG_PASSIVE As Long = &H80000000 Const INTERNET_SERVICE_FTP As Long = 1 Const FTP_TRANSFER_TYPE_ASCII As Long = 1 Const FTP_TRANSFER_TYPE_BINARY As Long = 2 Const FILE_ATTRIBUTE_NORMAL = &H80 Dim hNetConn As Long Dim hFTPConn As Long Dim sDir As String Private Sub cbkb_Click() Dim fConn As Long Dim fData As WIN32_FIND_DATA Dim fResult As Boolean Dim stat As Long ' Choisir un emplacement serveur Select Case cbKB.ListIndex Case 0 sDir = "developr/vb/kb" Case 1 sDir = "developr/visual_c/kb" Case 2 sDir = "deskapps/access/kb" Case 3 sDir = "deskapps/excel/kb" Case 4 sDir = "deskapps/word/kb" End Select If hNetConn Then ' Change le pointeur souris Screen.MousePointer = 11 ' Créer une connection avec le serveur FTP hFTPConn = InternetConnect(hNetConn, "ftp.microsoft.com", _ INTERNET_INVALID_PORT_NUMBER, vbNullString, vbNullString, _ INTERNET_SERVICE_FTP, INTERNET_CONNECT_FLAG_PASSIVE, 0) If hFTPConn Then If sDir <> "" Then stat = FtpSetCurrentDirectory(hFTPConn, sDir) End If fConn = FtpFindFirstFile(hFTPConn, "*.*", fData, 0, 0) If fConn Then fResult = True ' effacer tous les éléments de lq liste lbFiles.Clear Do While fResult ' ajout du nom du fichier à la liste lbFiles.AddItem fData.cFileName ' Ajout de nom du fichier suivant fResult = InternetFindNextFile(fConn, fData) Loop End If End If InternetCloseHandle (hFTPConn) ' Changement du pointeur souris à sa forme par défaut Screen.MousePointer = 0 End If End Sub Private Sub cbRetrieve_Click() Dim i As Integer Dim stat As Long Dim transfer As Long ' éetermine le mode transfert If opASCII.Value Then transfer = FTP_TRANSFER_TYPE_ASCII Else transfer = FTP_TRANSFER_TYPE_BINARY End If If hNetConn Then ' Screen.MousePointer = 11 ' commence la connection au serveur FTP hFTPConn = InternetConnect(hNetConn, "ftp.microsoft.com", INTERNET_DEFAULT_PORT, _ vbNullString, vbNullString, INTERNET_SERVICE_FTP, INTERNET_CONNECT_FLAG_PASSIVE, 0) If hFTPConn Then If sDir <> "" Then stat = FtpSetCurrentDirectory(hFTPConn, sDir) End If End If ' verifie si il y a selection d' au mons un fichier For i = 0 To lbFiles.ListCount - 1 If lbFiles.Selected(i) Then If hFTPConn Then ' téléchargement du fichier stat = FtpGetFile(hFTPConn, lbFiles.List(i), _ tbCurDir.Text & "\" & lbFiles.List(i), 1, _ FILE_ATTRIBUTE_NORMAL, transfer, 0) End If End If Next i InternetCloseHandle (hFTPConn) ' Screen.MousePointer = 0 End If End Sub Private Sub Form_Load() 'Ajout des sections cbKB.AddItem "Microsoft Visual Basic" cbKB.AddItem "Microsoft Visual C++" cbKB.AddItem "Microsoft Access" cbKB.AddItem "Microsoft Excel" cbKB.AddItem "Microsoft Word" ' initalisatione du WININET API hNetConn = InternetOpen("FTP Example", INTERNET_OPEN_TYPE_PRECONFIG, _ vbNullString, vbNullString, 0) ' initialization de l' emplacement de téléchargement tbCurDir = CurDir End Sub Private Sub Form_Unload(Cancel As Integer) InternetCloseHandle (hNetConn) End Sub Private Sub lbFiles_Click() If lbFiles.SelCount > 0 Then cbRetrieve.Enabled = True Else cbRetrieve.Enabled = False End If End Sub
18 mars 2004 à 13:23
Moi aussi je n'arrivais pas à voir les fichiers du serveur Ftp.
En faite, le code "lbFiles.AddItem fData.cFileName" est passé dans les commentaires par erreur ( je suppose).
Il suffit d'ajouter un retour chariot.
Regards
Gilardh
11 juil. 2003 à 11:35
20 févr. 2002 à 23:55
bart7900@aol.com
merci d avance
Snake-Mx
12 févr. 2002 à 22:37
2 déc. 2001 à 13:31
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.