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:
6:
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:
|
Wahl ausdrücklich
'egl1044
Privates Const BUF_SIZE = Puffer der Rückstellung 4096 '4KB für ftp
Privates Const INVALID_HANDLE_VALUE = (- 1)
Privates Const OPEN_EXISTING = &H3&
Privates Const GENERIC_READ = &H80000000
Privates Const GENERIC_WRITE = &H40000000
Privates Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Privates Const INTERNET_SERVICE_FTP = 1
Privates Const INTERNET_DEFAULT_FTP_PORT = 21
Privates Const FTP_TRANSFER_TYPE_UNKNOWN = 0
Privat Funktion CreateFileW Bibliothek „kernel32“ (ByVal lpFileName als lang, ByVal dwDesiredAccess als lang, ByVal dwShareMode als lang, ByVal lpSecurityAttributes als lang, ByVal dwCreationDisposition als lang, ByVal dwFlagsAndAttributes als lang, ByVal hTemplateFile als lang) als lang erklären
Privat Funktion ReadFile Bibliothek „kernel32“ (ByVal, das, ByVal lpBuffer als lang, ByVal nNumberOfBytesToRead als lang, ByRef lpNumberOfBytesRead als lang hFile ist als lang, ByVal lpOverlapped als lang), als lang erklären
Privat Funktion CloseHandle Bibliothek „kernel32“ (ByVal hObject als lang) als lang erklären
Privat Funktion InternetOpenW Bibliothek „wininet“ (ByVal lpszAgent als lang, ByVal dwAccessType als lang, ByVal lpszProxyName als lang, ByVal lpszProxyBypass als lang, ByVal dwFlags als lang) als lang erklären
Privat Funktion InternetConnectW Bibliothek „wininet“ (ByVal hInternetSession als lang, ByVal sServerName als lang, ByVal nServerPort als lang, ByVal sUsername als lang, ByVal sPassword als lang, ByVal lService als lang, ByVal lFlags als lang, ByVal lcontext als lang) als lang erklären
Privat Funktion InternetWriteFile Bibliothek „wininet“ (ByVal, das, ByVal lpBuffer als lang, ByVal dwNumberOfBytesToWrite als lang hFile ist als lang, ByRef lpdwNumberOfBytesWritten als lang), als lang erklären
Privat Funktion InternetCloseHandle Bibliothek „wininet“ (ByVal hInternet als lang) als lang erklären
Privat Funktion FtpOpenFileW Bibliothek „wininet“ (ByVal hConnect als lang, ByVal lpszFileName als lang, ByVal dwAccess als lang, ByVal dwFlags als lang, ByVal dwContext als lang) als lang erklären
Privat Funktion GetFileSize Bibliothek „kernel32“ (ByVal hFile als lang, ByRef lpFileSizeHigh als lang) als lang erklären
Puffer (BUF_SIZE) als Byte verdunkeln
dwReadBytes als lang verdunkeln
dwWrittenBytes als lang verdunkeln
Schwach als lang hOpen
hConnect als lang verdunkeln
hInternet als lang verdunkeln
hFile als lang verdunkeln
Allgemeines VorFtpPutFileEx (_
ByVal szServer als Schnur, _
ByVal szUser als Schnur, _
ByVal szPassword als Schnur, _
ByVal szLocalFile als Schnur, _
ByVal szServerFile als Schnur)
Schwaches dwStatus als lang
Schwach als lang dwLoFileSize
Schwach als lang dwHiFileSize
dwPercent als lang verdunkeln
'/init
hOpen = InternetOpenW (0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0)
'/an das ftp server anschließen
hConnect = InternetConnectW (, StrPtr (szServer), INTERNET_DEFAULT_FTP_PORT, StrPtr (szUser), StrPtr (szPassword), INTERNET_SERVICE_FTP, 0, 0) hOpen
Wenn hConnect = 0 dann
Reinigung
Debug.Print „InternetConnectW ()“ u. Err.LastDllError
Unterseeboot herausnehmen
Beenden wenn
'/Handgriff für Dateinamen erhalten, der zum ftp server geschrieben
hInternet = FtpOpenFileW (hConnect, StrPtr (szServerFile), GENERIC_WRITE, FTP_TRANSFER_TYPE_UNKNOWN, 0)
Wenn hInternet = 0 dann
Reinigung
Debug.Print „FtpOpenFile ()“ u. Err.LastDllError
Unterseeboot herausnehmen
Beenden wenn
'/Handgriff für lokale Akte erhalten, um Bytes zu lesen
hFile = CreateFileW (StrPtr („\ \? \“ u. szLocalFile), GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0)
Wenn hFile = INVALID_HANDLE_VALUE dann
Reinigung
Debug.Print „CreateFileW ()“ u. Err.LastDllError
Unterseeboot herausnehmen
Beenden wenn
'// erhalten lokale Dateigröße für Fortschritt. Unterstützungen dieses Beispiels
' nur bis zu 2GB des Statusberichtsfortschritts.
dwLoFileSize = GetFileSize (hFile, dwHiFileSize)
'/lokale Akte lesen, schreiben Bedieneraktenbytes
Tun
Wenn ReadFile (hFile, VarPtr (Puffer (0)), BUF_SIZE, dwReadBytes, 0) dann
Wenn InternetWriteFile (hInternet, VarPtr (Puffer (0)), dwReadBytes, dwWrittenBytes) dann
'Die Menge der Bytes geschrieben und des Prozentsatzes aufspüren.
dwStatus = (dwStatus + dwWrittenBytes)
dwPercent = (dwStatus/dwLoFileSize) * 100
'Label1.Caption = dwPercent
Beenden wenn
Sonst
Ausgang tun
Beenden wenn
DoEvents
Bis dwReadBytes schlingen = 0
Debug.Print „getan“
'/Reinigung
Reinigung
Löschen-Puffer
Enden-Unterseeboot
Private Vorreinigung ()
Wenn 0 <> dann hOpen
InternetCloseHandle hOpen
= 0 hOpen
Beenden wenn
Wenn hConnect <> 0 dann
InternetCloseHandle hConnect
hConnect = 0
Beenden wenn
Wenn hInternet <> 0 dann
InternetCloseHandle hInternet
hInternet = 0
Beenden wenn
Wenn hFile > 0 dann
CloseHandle hFile
hFile = INVALID_HANDLE_VALUE
Beenden wenn
Unterseeboot beenden
|