.586
.model flat, stdcall
option casemap:none
include c:\masm32\include\windows.inc
include c:\masm32\include\user32.inc
include c:\masm32\include\kernel32.inc
include c:\masm32\include\masm32.inc
includelib c:\masm32\lib\kernel32.lib
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\masm32.lib
.DATA
MsgBoxCaption db "Find Dir",0
szWild byte '*', 0
szCrLf byte 13, 10, 0
szDir db "c:\",0
.CODE
ListDiR proc Root:dword
local Search:WIN32_FIND_DATA
local szDirs[2048]:byte
local Find:dword
invoke lstrlen, Root
inc eax
invoke lstrcpyn, addr szDirs, Root, eax
invoke lstrcat, addr szDirs, addr szWild
invoke FindFirstFile, addr szDirs, addr Search
.if eax == -1
ret
.endif
mov Find, eax
.repeat
mov eax,Search.dwFileAttributes
and eax, FILE_ATTRIBUTE_DIRECTORY
.if eax == FILE_ATTRIBUTE_DIRECTORY
invoke szMultiCat, 2,addr szDirs,addr Search.cFileName,addr szCrLf
.endif
invoke lstrlen, addr szDirs
invoke FindNextFile, Find, addr Search
.until eax == FALSE
invoke MessageBox, NULL,addr szDirs, addr MsgBoxCaption, 0
invoke FindClose,Find
ret
ListDiR endp
Start:
invoke ListDiR,addr szDir
invoke ExitProcess,0
ret
end Start[/b]