Hola,
Pues es verdad que se cuelan los archivos Zip y me temo que no serán los únicos... luego de varias pruebas parece ser que se toman los archivos ZIP (y acaso otro tipo de archivos comprimidos) como "directorios", y, puesto que, en cierto modo así son.
Lo cierto es que tanto "AFolder.IsFolder" retorna "true" con un archivo Zip y la función "FileGetAttribute" ídem de ídem. No sé me ocurre ahora mismo ninguna forma de conseguirlo, pero, tiene que haberla, apostaría algo.
En este
artículo en Torry's se trata el tema, pero, no lo he probado y, me parece, que también de ese modo se colarían los archivos Zip...
Después de algunas vueltas... he probado a utilizar la función de Windows "GetFileAttributes", y, de esta forma parece que no se cuelan archivos Zip (ignoro si se colará algún otro tipo de archivo... no deseado...), esto es, dicha función no parece tomar los archivos Zip como directorios, como ocurría con la "FileGetAttribute" y "AFolder.IsFolder".
Código Delphi
[-]
const
filtroArchivos = '.txt .dat';
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
begin
CanAdd := ((GetFileAttributes(PChar(AFolder.PathName)) and FILE_ATTRIBUTE_DIRECTORY) <> 0)
or (Pos(AnsiLowerCase(ExtractFileExt(AFolder.PathName)), AnsiLowerCase(filtroArchivos)) <> 0);
end;
PD. Los archivos en formato ".rar" tampoco se cuelan... ignoro si lo hacían "antes".
