powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / wininet.dll и листинг файлов в папке на фтп
5 сообщений из 5, страница 1 из 1
wininet.dll и листинг файлов в папке на фтп
    #33255006
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
...........

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 *  260 
   cAlternate As String *  14 
End Type

.....



Sub main()
    Dim hInetSession  As Long
    Dim gFTPSession  As Long
    Dim hFile  As Long, hFile1  As Long
    Dim fd As WIN32_FIND_DATA
    hInetSession = InternetOpen("Smile",  1 , vbNullString, vbNullString,  0 )
    gFTPSession = InternetConnect(hInetSession, "xx.xx.xxx.xx",  21 , "anonymous", "@anonymous",  1 ,  0 ,  0 )
    hFile = FtpSetCurrentDirectory(gFTPSession, "/all/")
    hFile = FtpFindFirstFile(gFTPSession, vbNullString, fd,  0 ,  0 )
    Do
        hFile1 = InternetFindNextFile(hFile, fd)
        Debug.Print fd.cFileName
    Loop Until hFile1
    Call InternetCloseHandle(hFile1)
    Call InternetCloseHandle(hFile)
    Call InternetCloseHandle(gFTPSession)
    Call InternetCloseHandle(hInetSession)
End Sub

объявления функций стандартные, код рабочий, но имена фалов выглядят, например, так

Код: plaintext
0710_VCN.ARJ  d   S e t t i n g s \ n o d a r   w i n d i r = C : \ W I N N T       < =    X X                                                                                               

т.е. еще что-то цепляется....
как победить-то???
сэнкс
...
Рейтинг: 0 / 0
wininet.dll и листинг файлов в папке на фтп
    #33257452
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может кому-то будет полезным...
Код: plaintext
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.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
Option Explicit

Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Const MAXDWORD =  4294967295 #

Type FILETIME
   dwLowDateTime As Long
   dwHighDateTime As Long
End Type

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 *  260 
   cAlternate As String *  14 
End Type

Type SYSTEMTIME
  wYear As Integer
  wMonth As Integer
  wDayOfWeek As Integer
  wDay As Integer
  wHour As Integer
  wMinute As Integer
  wSecond As Integer
  wMilliseconds As Integer
End Type

Declare Function InternetCloseHandle _
   Lib "wininet.dll" (ByVal hInet As Long) As Integer
   
Declare Function InternetOpen _
   Lib "wininet.dll" Alias "InternetOpenA" ( _
   ByVal sAgent As String, _
   ByVal nAccessType As Long, _
   ByVal sProxyName As String, _
   ByVal sProxyBypass As String, _
   ByVal nFlags As Long) As Long

Declare Function InternetConnect _
   Lib "wininet.dll" Alias "InternetConnectA" ( _
   ByVal hInternetSession As Long, _
   ByVal sServerName As String, _
   ByVal nServerPort As Integer, _
   ByVal sUserName As String, _
   ByVal sPassword As String, _
   ByVal nService As Long, _
   ByVal dwFlags As Long, _
   ByVal dwContext As Long) As Long

Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" ( _
    ByVal hFtpSession As Long, _
    ByVal lpszDirectory As String) As Boolean

Declare Function FtpGetFile _
   Lib "wininet.dll" Alias "FtpGetFileA" ( _
   ByVal hFtpSession As Long, _
   ByVal lpszRemoteFile As String, _
   ByVal lpszNewFile As String, _
   ByVal fFailIfExists As Boolean, _
   ByVal dwFlagsAndAttributes As Long, _
   ByVal dwFlags As Long, _
   ByVal dwContext As Long) As Boolean

Declare Function FtpFindFirstFile _
   Lib "wininet.dll" Alias "FtpFindFirstFileA" ( _
   ByVal hFtpSession As Long, _
   ByVal lpszSearchFile As String, _
   ByRef lpFindFileData As WIN32_FIND_DATA, _
   ByVal dwFlags As Long, _
   ByVal dwContent As Long) As Long

Declare Function InternetFindNextFile _
   Lib "wininet.dll" Alias "InternetFindNextFileA" ( _
   ByVal hFind As Long, _
   ByRef lpvFindData As WIN32_FIND_DATA) As Long

Declare Function GetLastError Lib "kernel32" () As Long

Declare Function FormatMessage _
    Lib "kernel32" Alias "FormatMessageA" ( _
    ByVal dwFlags As Long, _
    lpSource As Any, _
    ByVal dwMessageId As Long, _
    ByVal dwLanguageId As Long, _
    ByVal lpBuffer As String, _
    ByVal nSize As Long, _
    Arguments As Long) As Long
Declare Function FileTimeToSystemTime Lib "kernel32.dll" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long

Function LastSystemError() As String
    Dim sError As String *  500 
    Dim lErrNum As Long
    Dim lErrMsg As Long
    '
    lErrNum = GetLastError
    lErrMsg = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ByVal  0 &, lErrNum,  0 , sError, Len(sError),  0 )
    LastSystemError = Trim(sError)
End Function

Sub main()
    Dim hInetSession  As Long
    Dim hFtpSession  As Long
    Dim hFile  As Long
    Dim hFile1  As Long
    Dim retval As Long
    Dim fd As WIN32_FIND_DATA
    Dim wtime As SYSTEMTIME
    
    hInetSession = InternetOpen("Smile",  1 , vbNullString, vbNullString,  0 )
    hFtpSession = InternetConnect(hInetSession, "xx.xx.xxx.xx",  21 , "anonymous", "@anonymous",  1 ,  0 ,  0 )
    hFile = FtpSetCurrentDirectory(hFtpSession, "/xxxxxx/xxxxxxxxxxx/xxxx")
    hFile = FtpFindFirstFile(hFtpSession, "*.*", fd,  0 ,  0 )
    Dim i As Integer, k As Integer
    Do
        i =  1 
        k =  1 
        While i <> Len(fd.cFileName) And k <>  0 
            k = Asc(Mid(fd.cFileName, i,  1 ))
            i = i +  1 
        Wend
        retval = FileTimeToSystemTime(fd.ftLastWriteTime, wtime)
        
        Debug.Print Left(fd.cFileName, i -  1 )
        Debug.Print fd.nFileSizeHigh * (MAXDWORD +  1 ) + fd.nFileSizeLow
        Debug.Print wtime.wYear & "." & Right("0" & wtime.wMonth,  2 ) & "." & Right("0" & wtime.wDay,  2 )
        
        hFile1 = InternetFindNextFile(hFile, fd)
    Loop Until hFile1 =  0 
    Call InternetCloseHandle(hFile1)
    Call InternetCloseHandle(hFile)
    Call InternetCloseHandle(hFtpSession)
    Call InternetCloseHandle(hInetSession)
End Sub
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
wininet.dll и листинг файлов в папке на фтп
    #36472763
Black Chaos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят может у вас найдется копирование и заливка на фтп в асинхронном режиме?? а то у вас оба примера не асинхронного вида, а при такой работе с фтп форма у пользователя вешается до тех пор пока не отработает либо пока не умрет!
...
Рейтинг: 0 / 0
wininet.dll и листинг файлов в папке на фтп
    #36473529
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black Chaos,
Doevents в цикле Do ... Loop поможет.
...
Рейтинг: 0 / 0
wininet.dll и листинг файлов в папке на фтп
    #36474237
Black Chaos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_world,

еще раз для тех кто не читал мое сообщение. вопрос не в том что сделать что то в цикле,
а в том как залить файлы на фтп при асинхронном подключении! или же скопировать их с фтп все так же при асинхронном подключении! кто не знает читайте про INTERNET_FLAG_ASYNC ставится данный флаг в InternetOpen, но на этом далеко не все! а у вас в двух случаях стоят "0", а не INTERNET_FLAG_ASYNC. надеюсь теперь объяснил подробно что конкретно меня интересует.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / wininet.dll и листинг файлов в папке на фтп
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]