Вверх ↑
Ответов: 5446
Рейтинг: 323
#1: 2006-11-11 22:45:01 ЛС | профиль | цитата
v258, я поговорил по icq с этим товарищем, и понял его проблему. Я думаю, что если немного доработать (даже не напильником) WinFTP, зацепив как минимум (из модуля WinInet)

function FtpCreateDirectory(hConnect: HINTERNET; lpszDirectory: PChar): BOOL; stdcall;
function FtpGetCurrentDirectory(hConnect: HINTERNET; lpszDirectory: PChar): BOOL; stdcall;
function InternetFindNextFile(hFind: HINTERNET; lpvFindData: Pointer): BOOL; stdcall;
и выведя наружу

function FtpFindFirstFile(hConnect: HINTERNET; lpszSearchFile: PChar;
var lpFindFileData: TWin32FindData; dwFlags: DWORD;
dwContext: DWORD): HINTERNET; stdcall;


то коллега Леша будет удовлетворён.
Для получения листинга текущей директории (FTP) используется такой код (на C, на дельфи будет похоже)

#include <windows.h>
#include <Wininet.h>
#include <iostream.h>

int main()
{
WIN32_FIND_DATA pDirInfo;
HINTERNET hDir;
HINTERNET intOpen;
HINTERNET hConnect;
char userName[100]="";
char password[100]="";
char server[100]="";

cout << "Enter the server: ";
cin >> server;
cout << "Enter your user name: ";
cin >> userName;
cout << "Enter your password: ";
cin >> password;

intOpen = InternetOpen("Microsoft Internet Explorer", INTERNET_OPEN_TYPE_DIRECT,
NULL, NULL,INTERNET_FLAG_ASYNC);
hConnect = InternetConnect(intOpen, server, INTERNET_DEFAULT_FTP_PORT,
userName, password, INTERNET_SERVICE_FTP, INTERNET_SERVICE_FTP, 0);

hDir = FtpFindFirstFile(hConnect, "*.*", &pDirInfo,
INTERNET_FLAG_DONT_CACHE, 0);
cout << "
Root Dir Contains:
" << pDirInfo.cFileName << "
";

while(InternetFindNextFile (hDir, &pDirInfo))
cout << pDirInfo.cFileName << "
";

return 0;
}
карма: 1

0