1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
|
Expliciete optie
'egl1044
Privé Const BUF_SIZE = 4096 '4KB standaardbuffer voor FTP
Privé Const INVALID_HANDLE_VALUE = (- 1)
Privé Const OPEN_EXISTING = &H3&
Privé Const GENERIC_READ = &H80000000
Privé Const GENERIC_WRITE = &H40000000
Privé Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Privé Const INTERNET_SERVICE_FTP = 1
Privé Const INTERNET_DEFAULT_FTP_PORT = 21
Privé Const FTP_TRANSFER_TYPE_UNKNOWN = 0
Privé verklaar de Lib „kernel32“ van CreateFileW van de Functie (ByVal lpFileName zoals lang, ByVal dwDesiredAccess zoals lang, ByVal dwShareMode zoals lang, ByVal lpSecurityAttributes zoals lang, ByVal dwCreationDisposition zoals lang, ByVal dwFlagsAndAttributes zoals lang, ByVal hTemplateFile zoals lang) zoals lang
Privé verklaar de Lib „kernel32“ van ReadFile van de Functie (ByVal hFile zoals lang, ByVal lpBuffer zoals lang, ByVal nNumberOfBytesToRead zoals lang, ByRef lpNumberOfBytesRead zoals lang, ByVal zoals lang) lpOverlapped zoals lang
Privé verklaar de Lib „kernel32“ van CloseHandle van de Functie (ByVal hObject zoals lang) zoals lang
Privé verklaar de Lib van InternetOpenW van de Functie „wininet“ (ByVal lpszAgent zoals lang, ByVal dwAccessType zoals lang, ByVal lpszProxyName zoals lang, ByVal lpszProxyBypass zoals lang, ByVal dwFlags zoals lang) zoals lang
Privé verklaar de Lib van InternetConnectW van de Functie „wininet“ (hInternetSession ByVal zoals lang, ByVal sServerName zoals lang, ByVal nServerPort zoals lang, ByVal sUsername zoals lang, ByVal sPassword zoals lang, ByVal lService zoals lang, ByVal lFlags zoals lang, ByVal lcontext zoals lang) zoals lang
Privé verklaar de Lib van InternetWriteFile van de Functie „wininet“ (ByVal hFile zoals lang, ByVal lpBuffer zoals lang, ByVal dwNumberOfBytesToWrite zoals lang, ByRef zoals lang) lpdwNumberOfBytesWritten zoals lang
Privé verklaar de Lib van InternetCloseHandle van de Functie „wininet“ (ByVal hInternet zoals lang) zoals lang
Privé verklaar de Lib van FtpOpenFileW van de Functie „wininet“ (ByVal hConnect zoals lang, ByVal lpszFileName zoals lang, ByVal dwAccess zoals lang, ByVal dwFlags zoals lang, ByVal dwContext zoals lang) zoals lang
Privé verklaar de Lib „kernel32“ van GetFileSize van de Functie (ByVal hFile zoals lang, ByRef lpFileSizeHigh zoals lang) zoals lang
Verduister Buffer (BUF_SIZE) als Byte
Verduister dwReadBytes zoals lang
Verduister dwWrittenBytes zoals lang
Schemerig hOpen zoals lang
Verduister hConnect zoals lang
Verduister hInternet zoals lang
Verduister hFile zoals lang
Openbare SubFtpPutFileEx (_
ByVal szServer als Koord, _
ByVal szUser als Koord, _
ByVal szPassword als Koord, _
ByVal szLocalFile als Koord, _
ByVal szServerFile als Koord)
Schemerige dwStatus zoals lang
Schemerig dwLoFileSize zoals lang
Schemerig dwHiFileSize zoals lang
Verduister dwPercent zoals lang
'/init
hOpen = InternetOpenW (0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0)
'/verbind met de FTPserver
hConnect = InternetConnectW (hOpen, StrPtr (szServer), INTERNET_DEFAULT_FTP_PORT, StrPtr (szUser), StrPtr (szPassword), INTERNET_SERVICE_FTP, 0, 0)
Als hConnect = 0 toen
Schoonmaakbeurt
Debug.Print „InternetConnectW ()“ & Err.LastDllError
Sub van de uitgang
Eind als
'/krijg handvat voor filename die aan de FTPserver zal worden geschreven
hInternet = FtpOpenFileW (hConnect, (szServerFile) StrPtr, GENERIC_WRITE, FTP_TRANSFER_TYPE_UNKNOWN, 0)
Als hInternet = 0 toen
Schoonmaakbeurt
Debug.Print „FtpOpenFile ()“ & Err.LastDllError
Sub van de uitgang
Eind als
'/breng handvat voor lokaal dossier ertoe om bytes te lezen
hFile = CreateFileW (StrPtr („\ \? \“ & szLocalFile), GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0)
Als hFile = INVALID_HANDLE_VALUE toen
Schoonmaakbeurt
Debug.Print „CreateFileW ()“ & Err.LastDllError
Sub van de uitgang
Eind als
'// krijgt lokale dossiergrootte voor vooruitgang. Dit voorbeeld steunt
' slechts tot 2GB van status die vooruitgang meldt.
dwLoFileSize = hFile GetFileSize (, dwHiFileSize)
'/schrijft het gelezen lokale dossier, de bytes van het serverdossier
Als hFile ReadFile (, VarPtr (Buffer (0)), BUF_SIZE, dwReadBytes, 0) toen
Als InternetWriteFile (hInternet, VarPtr (Buffer (0)), dwReadBytes, dwWrittenBytes) toen
'Spoor de hoeveelheid geschreven bytes en percentage.
dwStatus = (dwStatus + dwWrittenBytes)
dwPercent = (dwStatus/dwLoFileSize) * 100
'Label1.Caption = dwPercent
Eind als
Anders
De uitgang
Beëindig als
DoEvents
Lijn tot dwReadBytes = 0
Debug.Print „Gedaan“
'/schoonmaakbeurt
Schoonmaakbeurt
Wis Buffer
Beëindig Sub
Privé SubSchoonmaakbeurt ()
Als 0 <> dan hOpen
InternetCloseHandle hOpen
hOpen = 0
Beëindig als
Als hConnect <> 0 toen
InternetCloseHandle hConnect
hConnect = 0
Eind als
Als hInternet <> 0 toen
InternetCloseHandle hInternet
hInternet = 0
Eind als
Als hFile > 0 toen
hFile CloseHandle
hFile = INVALID_HANDLE_VALUE
Eind als
Sub van het eind
|