;coded by robinh00d ;QQ:530222815 ;Email:robinh00d_at_163.com ;MSN:robinh00d@263.net .386 .model flat,stdcall option casemap:none include windows.inc include kernel32.inc includelib kernel32.lib include user32.inc includelib user32.lib .data FILE_MASK db '*.*',0 szPathSign db '\',0 szTest db 'D:\MyPage\',0 szTitle db 'robinh00d',0 .code FileList proc lpszDir local szBuffer[MAX_PATH]:byte local wfd:WIN32_FIND_DATA local @SearchHandle:DWORD mov esi,lpszDir push esi lea esi,[szBuffer] push esi call lstrcpy push offset FILE_MASK push esi call lstrcat lea eax,wfd push eax push esi call FindFirstFile or eax,eax jz @FindFailed mov @SearchHandle,eax @1: lea esi,[wfd] assume esi:ptr WIN32_FIND_DATA lea edi,[esi].cFileName invoke MessageBox,0,edi,addr szTitle,0 cmp byte ptr [edi],'.' jz @2 mov edi,[esi].dwFileAttributes and edi,FILE_ATTRIBUTE_DIRECTORY jne @IsDirectory @2: lea eax,wfd push eax push @SearchHandle call FindNextFile or eax,eax jnz @1 ret @IsDirectory: ;////// mov edi,lpszDir push edi lea edi,[szBuffer] push edi call lstrcpy lea edi,[esi].cFileName push edi lea edi,[szBuffer] push edi call lstrcat push offset szPathSign lea edi,[szBuffer] push edi call lstrcat lea edi,[szBuffer] push edi ;push offset wfd call FileList jmp @2 @FindFailed: ret FileList endp _start: push offset szTest call FileList push 0 call ExitProcess end _start