.code ; ¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤ Algo PROC hWnd:HWND ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« .data Finish db "...%d fichiers traités !", 0 NFound db "Fichiers non présents !", 0 Ttl db "LogFileInfo by $KORBUT", 0 copyright db "+-------------------------------+", 0Dh, 0Ah db "| File Generated by LogFileInfo |", 0Dh, 0Ah db "| Coded by $KORBUT / RiF 2k4 |", 0Dh, 0Ah db "+-------------------------------+", 0Dh, 0Ah, 0 asc db "------------------------------------------------", 0 FileName db "FileInfos.txt", 0 Endf db "-[EoF]-", 0 Filt db "\*", 0 Nme db "Nom du fichier : ", 0 Sze db "Taille : %d octets", 0 Attr db "Attribut : ", 0 CrTime db "Création : ", 0 LstAcc db "Dernier accés : ", 0 LstMod db "Modification : ", 0 deci db "%d", 0 Att1 db "FILE_ATTRIBUTE_ARCHIVE", 0 Att2 db "FILE_ATTRIBUTE_COMPRESSED", 0 Att3 db "FILE_ATTRIBUTE_DIRECTORY", 0 Att4 db "FILE_ATTRIBUTE_HIDDEN", 0 Att5 db "FILE_ATTRIBUTE_NORMAL", 0 Att6 db "FILE_ATTRIBUTE_OFFLINE", 0 Att7 db "FILE_ATTRIBUTE_READONLY", 0 Att8 db "FILE_ATTRIBUTE_SYSTEM", 0 Att9 db "FILE_ATTRIBUTE_TEMPORARY", 0 NotAtt db "No File Attributes !", 0 ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« .data? Count db ? bw dw ? Day dw ? Month dw ? Year dw ? Hour dw ? Minute dw ? Second dw ? RetChar dw ? hSearch HANDLE ? hFile HANDLE ? temp db 50 dup (?) Buffer db 50 dup (?) Directory db 512 dup (?) _FILETIME FILETIME _SYSTEMTIME SYSTEMTIME _WIN32_FIND_DATA WIN32_FIND_DATA ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« .code ; ----------------------------- ; On choppe le premier fichier ; ----------------------------- mov byte ptr [RetChar], 0Dh mov byte ptr [RetChar+1], 0Ah invoke CreateFile, ADDR FileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_NEW,\ FILE_ATTRIBUTE_NORMAL, NULL mov hFile, eax invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL invoke lstrlen, ADDR copyright invoke WriteFile, hFile, ADDR copyright, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL invoke GetCurrentDirectory, 512, ADDR Directory invoke lstrlen, ADDR Directory invoke lstrcat, ADDR [Directory+eax], ADDR Filt invoke FindFirstFile, ADDR Directory, ADDR _WIN32_FIND_DATA cmp eax, -1 jz _NotFnd mov hSearch, eax ; ----------------------------- ; On choppe son nom ; ----------------------------- _Take: inc Count invoke ClearBuffer, ADDR Buffer lea ecx, _WIN32_FIND_DATA.cFileName push ecx invoke lstrcmp, ecx, ADDR FileName or eax, eax jz _Next .IF Count == 1 || Count == 2 jmp _Next .ENDIF invoke lstrcat, ADDR Buffer, ADDR Nme invoke lstrlen, ADDR Buffer pop ecx invoke lstrcat, ADDR [Buffer+eax], ecx invoke lstrlen, ADDR Buffer invoke WriteFile, hFile, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ; ----------------------------- ; ...sa taille ; ----------------------------- invoke ClearBuffer, ADDR Buffer mov ecx, _WIN32_FIND_DATA.nFileSizeLow invoke wsprintf, ADDR Buffer, ADDR Sze, ecx invoke lstrlen, ADDR Buffer invoke WriteFile, hFile, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ; ----------------------------- ; ...ses attributs ; ----------------------------- invoke ClearBuffer, ADDR Buffer mov ecx, [_WIN32_FIND_DATA.dwFileAttributes] invoke Attributes, hWnd, hFile, ecx ; ----------------------------- ; ...sa date de création ; ----------------------------- invoke FileTimeToLocalFileTime, addr _WIN32_FIND_DATA.ftCreationTime, ADDR _FILETIME invoke FileTimeToSystemTime, ADDR _FILETIME, ADDR _SYSTEMTIME invoke ClearBuffer, ADDR Buffer invoke ClearBuffer, ADDR temp mov byte ptr [Buffer], '0' mov ax, word ptr [_SYSTEMTIME.wDay] invoke wsprintf, ADDR Buffer+1, ADDR deci, ax mov byte ptr [Buffer+2], '/' mov byte ptr [Buffer+3], '0' mov ax, word ptr [_SYSTEMTIME.wMonth] invoke wsprintf, ADDR Buffer+4, ADDR deci, ax mov byte ptr [Buffer+5], '/' mov ax, word ptr [_SYSTEMTIME.wYear] invoke wsprintf, ADDR Buffer+6, ADDR deci, ax mov word ptr [Buffer+10], '- ' mov byte ptr [Buffer+12], ' ' mov ax, word ptr [_SYSTEMTIME.wHour] invoke wsprintf, ADDR Buffer+13, ADDR deci, ax mov byte ptr [Buffer+15], ':' mov ax, word ptr [_SYSTEMTIME.wMinute] invoke wsprintf, ADDR Buffer+16, ADDR deci, ax mov byte ptr [Buffer+18], ':' mov ax, word ptr [_SYSTEMTIME.wSecond] invoke wsprintf, ADDR Buffer+19, ADDR deci, ax invoke lstrcat, ADDR temp, ADDR CrTime invoke lstrcat, ADDR temp, ADDR Buffer invoke lstrlen, ADDR temp invoke WriteFile, hFile, ADDR temp, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ; ----------------------------- ; ...son dernier accés ; ----------------------------- invoke FileTimeToLocalFileTime, addr _WIN32_FIND_DATA.ftLastAccessTime, ADDR _FILETIME invoke FileTimeToSystemTime, ADDR _FILETIME, ADDR _SYSTEMTIME invoke ClearBuffer, ADDR Buffer invoke ClearBuffer, ADDR temp mov byte ptr [Buffer], '0' mov ax, word ptr [_SYSTEMTIME.wDay] invoke wsprintf, ADDR Buffer+1, ADDR deci, ax mov byte ptr [Buffer+2], '/' mov byte ptr [Buffer+3], '0' mov ax, word ptr [_SYSTEMTIME.wMonth] invoke wsprintf, ADDR Buffer+4, ADDR deci, ax mov byte ptr [Buffer+5], '/' mov ax, word ptr [_SYSTEMTIME.wYear] invoke wsprintf, ADDR Buffer+6, ADDR deci, ax invoke lstrcat, ADDR temp, ADDR LstAcc invoke lstrcat, ADDR temp, ADDR Buffer invoke lstrlen, ADDR temp invoke WriteFile, hFile, ADDR temp, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ; ----------------------------- ; ...sa dernière modification ; ----------------------------- invoke FileTimeToLocalFileTime, addr _WIN32_FIND_DATA.ftLastWriteTime, ADDR _FILETIME invoke FileTimeToSystemTime, ADDR _FILETIME, ADDR _SYSTEMTIME invoke ClearBuffer, ADDR Buffer invoke ClearBuffer, ADDR temp mov byte ptr [Buffer], '0' mov ax, word ptr [_SYSTEMTIME.wDay] invoke wsprintf, ADDR Buffer+1, ADDR deci, ax mov byte ptr [Buffer+2], '/' mov byte ptr [Buffer+3], '0' mov ax, word ptr [_SYSTEMTIME.wMonth] invoke wsprintf, ADDR Buffer+4, ADDR deci, ax mov byte ptr [Buffer+5], '/' mov ax, word ptr [_SYSTEMTIME.wYear] invoke wsprintf, ADDR Buffer+6, ADDR deci, ax mov word ptr [Buffer+10], '- ' mov byte ptr [Buffer+12], ' ' mov ax, word ptr [_SYSTEMTIME.wHour] invoke wsprintf, ADDR Buffer+13, ADDR deci, ax mov byte ptr [Buffer+15], ':' mov ax, word ptr [_SYSTEMTIME.wMinute] invoke wsprintf, ADDR Buffer+16, ADDR deci, ax mov byte ptr [Buffer+18], ':' mov ax, word ptr [_SYSTEMTIME.wSecond] invoke wsprintf, ADDR Buffer+19, ADDR deci, ax invoke lstrcat, ADDR temp, ADDR LstMod invoke lstrcat, ADDR temp, ADDR Buffer invoke lstrlen, ADDR temp invoke WriteFile, hFile, ADDR temp, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL invoke WriteFile, hFile, ADDR asc, SIZEOF asc, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ; ----------------------------- ; Fichier suivant... ; ----------------------------- _Next: invoke FindNextFile, hSearch, ADDR _WIN32_FIND_DATA or eax, eax jnz _Take ; ----------------------------- ; That's kewl !!! ; ----------------------------- sub byte ptr [Count], 3 invoke wsprintf, ADDR Buffer, ADDR Finish, Count invoke WriteFile, hFile, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL invoke WriteFile, hFile, ADDR Endf, SIZEOF Endf, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL invoke CloseHandle, hFile invoke SetDlgItemText, hWnd, eNom, ADDR Buffer ret ; ----------------------------- ; Pas trouvé !!! ; ----------------------------- _NotFnd: invoke MessageBox, hWnd, ADDR NFound, ADDR Ttl, MB_ICONERROR ret Algo endp ; ¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤ Attributes PROC WinhWnd :DWORD, FilehWnd :DWORD, FileAttr :DWORD mov eax, FileAttr cmp eax, 20h jnz @F invoke ClearBuffer, ADDR Buffer invoke lstrcat, ADDR Buffer, ADDR Attr invoke lstrlen, ADDR Buffer invoke lstrcat, ADDR [Buffer+eax], ADDR Att1 invoke lstrlen, ADDR Buffer invoke WriteFile, FilehWnd, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret @@: cmp eax, 800h jnz @F invoke ClearBuffer, ADDR Buffer invoke lstrcat, ADDR Buffer, ADDR Attr invoke lstrlen, ADDR Buffer invoke lstrcat, ADDR [Buffer+eax], Att2 invoke lstrlen, ADDR Buffer invoke WriteFile, FilehWnd, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret @@: cmp eax, 10h jnz @F invoke ClearBuffer, ADDR Buffer invoke lstrcat, ADDR Buffer, ADDR Attr invoke lstrlen, ADDR Buffer invoke lstrcat, ADDR [Buffer+eax], ADDR Att3 invoke lstrlen, ADDR Buffer invoke WriteFile, FilehWnd, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret @@: cmp eax, 2h jnz @F invoke ClearBuffer, ADDR Buffer invoke lstrcat, ADDR Buffer, ADDR Attr invoke lstrlen, ADDR Buffer invoke lstrcat, ADDR [Buffer+eax], ADDR Att4 invoke lstrlen, ADDR Buffer invoke WriteFile, FilehWnd, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret @@: cmp eax, 80h jnz @F invoke ClearBuffer, ADDR Buffer invoke lstrcat, ADDR Buffer, ADDR Attr invoke lstrlen, ADDR Buffer invoke lstrcat, ADDR [Buffer+eax], ADDR Att5 invoke lstrlen, ADDR Buffer invoke WriteFile, FilehWnd, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret @@: cmp eax, 00001000h jnz @F invoke ClearBuffer, ADDR Buffer invoke lstrcat, ADDR Buffer, ADDR Attr invoke lstrlen, ADDR Buffer invoke lstrcat, ADDR [Buffer+eax], ADDR Att6 invoke lstrlen, ADDR Buffer invoke WriteFile, FilehWnd, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret @@: cmp eax, 1h jnz @F invoke ClearBuffer, ADDR Buffer invoke lstrcat, ADDR Buffer, ADDR Attr invoke lstrlen, ADDR Buffer invoke lstrcat, ADDR [Buffer+eax], ADDR Att7 invoke lstrlen, ADDR Buffer invoke WriteFile, FilehWnd, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret @@: cmp eax, 4h jnz @F invoke ClearBuffer, ADDR Buffer invoke lstrcat, ADDR Buffer, ADDR Attr invoke lstrlen, ADDR Buffer invoke lstrcat, ADDR [Buffer+eax], ADDR Att8 invoke lstrlen, ADDR Buffer invoke WriteFile, FilehWnd, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret @@: cmp eax, 100h jnz @F invoke ClearBuffer, ADDR Buffer invoke lstrcat, ADDR Buffer, ADDR Attr invoke lstrlen, ADDR Buffer invoke lstrcat, ADDR [Buffer+eax], ADDR Att9 invoke lstrlen, ADDR Buffer invoke WriteFile, FilehWnd, ADDR Buffer, eax, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret @@: invoke WriteFile, FilehWnd, ADDR NotAtt, SIZEOF NotAtt, ADDR bw, NULL invoke WriteFile, hFile, ADDR RetChar, 2, ADDR bw, NULL ret Attributes endp ; ¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤ ClearBuffer PROC Buff:DWORD mov eax, Buff @@: or byte ptr [eax], 0 je @F mov byte ptr [eax], 0 inc eax jmp @B @@: ret ClearBuffer ENDP ; ¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤=÷=¤ ; ------------------------------------------------------------------------- ; EOF ; -------------------------------------------------------------------------