Enumerar directorio por FTP (WinAPI)

Iniciado por mester, 9 Diciembre 2015, 15:47 PM

0 Miembros y 1 Visitante están viendo este tema.

mester

Hola.
Estoy haciendo un cliente de FTP para Windows y de momento me va bien a excepción de listar los archivos. Utilizo la siguiente función: https://msdn.microsoft.com/en-us/library/windows/desktop/aa384146(v=vs.85).aspx
Y la uso de esta manera:

...
TCHAR direct[MAX_PATH];
DWORD det=MAX_PATH;
WIN32_FIND_DATA met;
do{//El socket es "conexion"
FtpGetCurrentDirectory(conexion,direct,&det);
if(FtpFindFirstFile(conexion,direct,&met,det,0)==NULL)
printf("NULL\n");
else
printf("%s\n",met.cFileName);
}while(InternetFindNextFile(conexion,(LPVOID)&met));
...


Al ejecutar esta función solo me imprime la primera carpeta, y si vuelvo a ejecutarla me devulve NULL.

Gracias de antemano
Justicia es dar a cada uno lo que se merece

mester

Ya lo he solucionado. De la siguiente manera:

HINTERNET sec;
TCHAR direct[MAX_PATH];
DWORD det=MAX_PATH;
WIN32_FIND_DATA met;
FtpGetCurrentDirectory(conexion,direct,&det); //Para determinar el directorio actual
sec=FtpFindFirstFile(conexion,direct,&met,det,0); //Asignacion
do{
if(sec==NULL)
printf("Acceso denegado\n");
else
printf("%s\n",met.cFileName);
}while(InternetFindNextFile(sec,&met));
_=0;
InternetCloseHandle(sec);


El problema principal era que la funcion:

sec=FtpFindFirstFile(conexion,direct,&met,det,0);


Estaba dentro del bucle
Justicia es dar a cada uno lo que se merece