(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:
|
Opcja Wyraźny
'egl1044
Intymny Const BUF_SIZE = 4096 '4KB brak odbojnica dla FTP
Intymny Const INVALID_HANDLE_VALUE = (- (1))
Intymny Const OPEN_EXISTING = &H3&
Intymny Const GENERIC_READ = &H80000000
Intymny Const GENERIC_WRITE = &H40000000
Intymny Const INTERNET_OPEN_TYPE_PRECONFIG = (0)
Intymny Const INTERNET_SERVICE_FTP = (1)
Intymny Const INTERNET_DEFAULT_FTP_PORT = 21
Intymny Const FTP_TRANSFER_TYPE_UNKNOWN = (0)
Intymny Oznajmiać Funkcja CreateFileW Wyzwolenie "kernel32" (ByVal lpFileName Długo, ByVal dwDesiredAccess Długo, ByVal dwShareMode Długo, ByVal lpSecurityAttributes Długo, ByVal dwCreationDisposition Długo, ByVal dwFlagsAndAttributes Długo, ByVal hTemplateFile Długo) Długo
Intymny Oznajmiać Funkcja ReadFile Wyzwolenie "kernel32" (ByVal hFile Długo, ByVal lpBuffer Długo, ByVal nNumberOfBytesToRead Długo, ByRef lpNumberOfBytesRead Długo, ByVal lpOverlapped Tęsknić) Długo
Intymny Oznajmiać Funkcja CloseHandle Wyzwolenie "kernel32" (ByVal hObject Długo) Długo
Intymny Oznajmiać Funkcja InternetOpenW Wyzwolenie "wininet" (ByVal lpszAgent Długo, ByVal dwAccessType Długo, ByVal lpszProxyName Długo, ByVal lpszProxyBypass Długo, ByVal dwFlags Długo) Długo
Intymny Oznajmiać Funkcja InternetConnectW Wyzwolenie "wininet" (ByVal hInternetSession Długo, ByVal sServerName Długo, ByVal nServerPort Długo, ByVal sUsername Długo, ByVal sPassword Długo, ByVal lService Długo, ByVal lFlags Długo, ByVal lcontext Długo) Długo
Intymny Oznajmiać Funkcja InternetWriteFile Wyzwolenie "wininet" (ByVal hFile Długo, ByVal lpBuffer Długo, ByVal dwNumberOfBytesToWrite Długo, ByRef lpdwNumberOfBytesWritten Tęsknić) Długo
Intymny Oznajmiać Funkcja InternetCloseHandle Wyzwolenie "wininet" (ByVal hInternet Długo) Długo
Intymny Oznajmiać Funkcja FtpOpenFileW Wyzwolenie "wininet" (ByVal hConnect Długo, ByVal lpszFileName Długo, ByVal dwAccess Długo, ByVal dwFlags Długo, ByVal dwContext Długo) Długo
Intymny Oznajmiać Funkcja GetFileSize Wyzwolenie "kernel32" (ByVal hFile Długo, ByRef lpFileSizeHigh Długo) Długo
Ćmić Odbojnica (BUF_SIZE) Jako Bajt
Ćmić dwReadBytes Długo
Ćmić dwWrittenBytes Długo
Ciemnawy hOpen Tęsknić
Ćmić hConnect Długo
Ćmić hInternet Długo
Ćmić hFile Długo
Jawny Okręt podwodny FtpPutFileEx (_
ByVal szServer Jako Sznurek, _
ByVal szUser Jako Sznurek, _
ByVal szPassword Jako Sznurek, _
ByVal szLocalFile Jako Sznurek, _
ByVal szServerFile Sznurek)
Ciemnawy dwStatus Długo
Ciemnawy dwLoFileSize Tęsknić
Ciemnawy dwHiFileSize Tęsknić
Ćmić dwPercent Długo
'/init
hOpen = InternetOpenW ((0), INTERNET_OPEN_TYPE_PRECONFIG, (0), (0), (0))
'/łączyć the ftp serwer
hConnect = InternetConnectW (hOpen, StrPtr (szServer), INTERNET_DEFAULT_FTP_PORT, StrPtr (szUser), StrPtr (szPassword), INTERNET_SERVICE_FTP, (0), (0))
Jeżeli hConnect = (0) Wtedy
CleanUp
Debug.Print "InternetConnectW ()" & Err.LastDllError
Wyjście Okręt podwodny
Kończyć Jeżeli
'/dostawać rękojeść dla filename który napisać the ftp serwer
hInternet = FtpOpenFileW (hConnect, StrPtr (szServerFile), GENERIC_WRITE, FTP_TRANSFER_TYPE_UNKNOWN, (0))
Jeżeli hInternet = (0) Wtedy
CleanUp
Debug.Print "FtpOpenFile ()" & Err.LastDllError
Wyjście Okręt podwodny
Kończyć Jeżeli
'/dostawać rękojeść dla lokalny kartoteka bajt
hFile = CreateFileW (StrPtr ("\ \? \" & szLocalFile), GENERIC_READ, (0), (0), OPEN_EXISTING, (0), (0))
Jeżeli hFile = INVALID_HANDLE_VALUE Wtedy
CleanUp
Debug.Print "CreateFileW ()" & Err.LastDllError
Wyjście Okręt podwodny
Kończyć Jeżeli
'// dostawać lokalny rozmiar pliku dla postęp. Ten przykład poparcie
' tylko do 2GB status reportaż postęp.
dwLoFileSize = GetFileSize (hFile, dwHiFileSize)
'/czytać lokalny kartoteka, pisać serwer kartoteka bajt
Jeżeli ReadFile (hFile, VarPtr (Odbojnica ((0))), BUF_SIZE, dwReadBytes, (0)) Wtedy
Jeżeli InternetWriteFile (hInternet, VarPtr (Odbojnica ((0))), dwReadBytes, dwWrittenBytes) Wtedy
'Tropić the kwota bajt pisać i odsetek.
dwStatus = (dwStatus + dwWrittenBytes)
dwPercent = (dwStatus/dwLoFileSize) * 100
'Label1.Caption = dwPercent
Kończyć Jeżeli
Inny
Wyjście
Kończyć Jeżeli
DoEvents
Zapętlać Do dwReadBytes = (0)
Debug.Print "Robić"
'/cleanup
CleanUp
Wymazywać Odbojnica
Kończyć Okręt podwodny
Intymny Okręt podwodny CleanUp ()
Jeżeli hOpen <> (0) Wtedy
InternetCloseHandle hOpen
hOpen = (0)
Kończyć Jeżeli
Jeżeli hConnect <> (0) Wtedy
InternetCloseHandle hConnect
hConnect = (0)
Kończyć Jeżeli
Jeżeli hInternet <> (0) Wtedy
InternetCloseHandle hInternet
hInternet = (0)
Kończyć Jeżeli
Jeżeli hFile > (0) Wtedy
CloseHandle hFile
hFile = INVALID_HANDLE_VALUE
Kończyć Jeżeli
Kończyć Okręt podwodny
|