hi,
try this CODE from HMG Forum
Code: Select all | Expand
aDir := HB_DirScanM( cPath, { "*.bmp", "*.jpg", "*.jpeg", "*.png", "*.gif", "*.tif", "*.tiff", "*.wmf", "*.emf" }, "", .T. )
it can recursive get all those Image Type
Code: Select all | Expand
FUNCTION hb_DirScanM( cPath, aFileMask, cAttr, lrecursiv )
RETURN hb_DoScanM( hb_DirSepAdd( hb_defaultValue( cPath, "" ) ), ;
IIF( HB_ISARRAY( aFileMask ), aFileMask, IIF( HB_ISSTRING( aFileMask ), { aFileMask }, { hb_osFileMask() } ) ), ;
hb_defaultValue( cAttr, "" ), ;
hb_ps(), lrecursiv )
Code: Select all | Expand
STATIC FUNCTION hb_doScanM( cPath, aMask, cAttr, cPathSep, lrecursiv )
LOCAL aFile
LOCAL lMatch
LOCAL aResult := {}
DEFAULT lrecursiv := .T.
FOR EACH aFile IN hb_vfDirectory( cPath + hb_osFileMask(), cAttr + IF( lrecursiv, "D", "" ) )
lMatch := .F.
AEVAL( aMask, { | x | IIF( HB_ISSTRING( x ), lMatch := hb_FileMatch( aFile[ F_NAME ], x ) .OR. lMatch, Nil ) } )
IF "D" $ aFile[ F_ATTR ]
IF lMatch .AND. "D" $ cAttr
IF lrecursiv = .T.
AADD( aResult, aFile )
ENDIF
ENDIF
IF !( aFile[ F_NAME ] == "." .OR. aFile[ F_NAME ] == ".." .OR. aFile[ F_NAME ] == "" )
AEVAL( hb_DoScanM( cPath + aFile[ F_NAME ] + cPathSep, aMask, cAttr, cPathSep ), ;
{ | x | x[ F_NAME ] := aFile[ F_NAME ] + cPathSep + x[ F_NAME ], ;
AADD( aResult, x ) } )
ENDIF
ELSEIF lMatch
AADD( aResult, aFile )
ENDIF
NEXT
RETURN aResult