Bonjour à tous,
Je cherche jusqu'ici sans succès à récupérer dans une variable la date et l'heure de création d'un fichier ou d'un dossier.
Les commande de type File et Filesystem ne le permettent pas (j'ai peut-être mal regardé hein...)
Un autre moyen ?
Merci d'avance.
Récupérer la date et l'heure d'un dossier/fichier
Autant le dire tout de suite, c'est chiant, faut convertir deux fois les données pour avoir les dates et heures locales 
Une petite routine s'impose, en attendant voici le code:


Une petite routine s'impose, en attendant voici le code:
Code : Tout sélectionner
;Heure et Date Locale
;Nico
;Le 26/05/04
; Structure Filetime
; dwLowDateTime.l
; dwHighDateTime.l
; EndStructure
;
; Structure SystemTime
; wYear.w
; wMonth.w
; wDayOfWeek.w
; wDay.w
; wHour.w
; wMinute.w
; wSecond.w
; wMilliseconds.w
; EndStructure
Creation1.Filetime
DernierAcces1.Filetime
DerniereConsultation1.Filetime
Creation2.Filetime
DernierAcces2.Filetime
DerniereConsultation2.Filetime
Creation3.SystemTime
DernierAcces3.SystemTime
DerniereConsultation3.SystemTime
Hfile.l= OpenFile(0,"c:\texte.txt")
If Hfile
If GetFileTime_(Hfile,@Creation1, @DernierAcces1, @DerniereConsultation1)
;bon là, j'arrète les if....
FileTimeToLocalFileTime_(Creation1, @Creation2)
FileTimeToLocalFileTime_(DernierAcces1, @DernierAcces2)
FileTimeToLocalFileTime_(DerniereConsultation1, @DerniereConsultation2)
If FileTimeToSystemTime_(Creation2, @Creation3)
MessageRequester("Info Creation",Str(Creation3\wDay)+" - "+Str(Creation3\wHour)+":"+Str(Creation3\wMinute))
If FileTimeToSystemTime_(DernierAcces2, @DernierAcces3)
MessageRequester("Info Dernier Acces",Str(DernierAcces3\wDay)+" - "+Str(DernierAcces3\wHour)+":"+Str(DernierAcces3\wMinute))
If FileTimeToSystemTime_(DerniereConsultation2, @DerniereConsultation3)
MessageRequester("Info Dernière Modification",Str(DerniereConsultation3\wDay)+" - "+Str(DerniereConsultation3\wHour)+":"+Str(DerniereConsultation3\wMinute))
EndIf
EndIf
EndIf
EndIf
closefile(0)
EndIf

Nemo,
voici un petit code qui pourrait t'inspirer (listicongadget avec non de fichier et date) - code simple juste pour un dossier et ici C:\
voici un petit code qui pourrait t'inspirer (listicongadget avec non de fichier et date) - code simple juste pour un dossier et ici C:\
Code : Tout sélectionner
Structure SHFILEINFO_Ok ; la structure SHFILEINFO PB est fausse
hIcon.l
iIcon.l
dwAttributes.l
szDisplayName.b[#MAX_PATH]
szTypeName.b[80]
EndStructure
Structure LVITEM ; La structure LV_ITEM est incomplète
Mask.l
iItem.l
iSubItem.l
State.l
stateMask.l
pszText.l
cchTextMax.l
iImage.l
lParam.l
iIndent.l
iGroupId.l
cColumns.l
puColumns.l
EndStructure
#Date = "dd'/'MM'/'yyyy"
#Fichier_Courant = 100
If OpenWindow(0, 0, 0, 600, 400, #PB_Window_WindowCentered | #PB_Window_SystemMenu, "Mini Exploreur de fichiers")
If CreateGadgetList(WindowID())
IdListIcon = ListIconGadget(0, 10, 10, 580, 380, "Fichier", 575 / 3, #LVS_SHAREIMAGELISTS)
AddGadgetColumn(0, 1, "Type", 575 / 3)
AddGadgetColumn(0, 2, "Date", 575 / 3)
Dossier.s ="C:\" ; dossier à examiner
; Assign la listImage système à la listIcon
CurrentDirectory.s = Space(#MAX_PATH)
GetSystemDirectory_(CurrentDirectory, #MAX_PATH)
hImageListS.l = SHGetFileInfo_(CurrentDirectory, 0, @InfosFile.SHFILEINFO_Ok, SizeOf(SHFILEINFO_Ok), #SHGFI_SYSICONINDEX | #SHGFI_SMALLICON)
ImageList_SetBkColor_(hImageListS, #CLR_NONE)
SendMessage_(IdListIcon, #LVM_SETIMAGELIST, #LVSIL_SMALL, hImageListS)
NomFichier$ = Space(256)
FileInfos.WIN32_FIND_DATA ; filetime
String1.s = Space(256) : FileDateTime.s = String1
If ExamineDirectory(0, Dossier, "*.*")
Repeat
Type = NextDirectoryEntry()
If Type
NomFichier$ = DirectoryEntryName()
; on récupère les infos sur l'icône et sur la description du fichier
SHGetFileInfo_(Dossier + NomFichier$, 0, @InfosFile, SizeOf(SHFILEINFO_Ok), #SHGFI_SYSICONINDEX | #SHGFI_SMALLICON | #SHGFI_TYPENAME)
; on affiche le 1er élément dans la listicongadget, soit le fichier + l'icône
VarList.LVITEM\Mask = #LVIF_TEXT | #LVIF_IMAGE ; ; mask défini le type de données | #LVIF_PARAM
VarList\iImage = InfosFile\iIcon ; l'index de l'icon dans la liste système
VarList\pszText = @NomFichier$ ; la chaîne à afficher
VarList\iSubItem = 0 ; indique que c'est le premier élément et pas un sous-élément
; on envoie le message pour afficher le premier élément
SendMessage_(IdListIcon, #LVM_INSERTITEM, 0, @VarList)
; on envoie le message pour afficher le deuxième élément
VarList\Mask = #LVIF_TEXT
VarList\pszText = @InfosFile\szTypeName[0] ; la chaîne à afficher
VarList\iSubItem = 1 ; indique que c'est le deuxième
; on envoie le message
SendMessage_(IdListIcon, #LVM_SETITEM, 0, @VarList)
; on récupère la date du fichier
ID = OpenFile(#Fichier_Courant, Dossier+NomFichier$)
If ID
GetFileTime_(ID, lpCreationTime.FILETIME, lpLastAccessTime.FILETIME, lpLastWriteTime.FILETIME)
CloseFile(#Fichier_Courant)
FileTimeToLocalFileTime_(lpLastWriteTime, @OutPut.l)
FileTimeToSystemTime_(@OutPut, @OutPutSystemTime.SYSTEMTIME)
GetDateFormat_(2048, 0, @OutPutSystemTime, #Date, @String1, 254)
GetTimeFormat_(2048, #TIME_FORCE24HOURFORMAT, @OutPutSystemTime, 0, @FileDateTime.s, 254)
String1 + " " + FileDateTime
VarList\iSubItem = 2; colonne 3
VarList\pszText = @String1
SendMessage_(IdListIcon, #LVM_SETITEM, 0, @VarList)
EndIf
EndIf
Until Type = 0
EndIf
EndIf
Repeat
Until WaitWindowEvent() = #PB_EventCloseWindow
EndIf
End
Fait chose par chose et pose des questions, ce code n'est pas celui que j'utilise perso car il faut ruser pour récupérer la date du fichier (il manque vraiment une commande DirectoryEntryDate() pour la Date et DirectoryEntryTime() pour l'heure du fichier.
J'utilise directement les API windows FindFirstFile_() et FindNextFile_()
Le plus serait donc d'intégrer le tri de chaque colonne en affichant les dossiers avants les fichiers par ordre alphabétique ou inverse, le tri par date et par type. Peut-être mon prochain post si j'ai un peu de temps
J'utilise directement les API windows FindFirstFile_() et FindNextFile_()
Le plus serait donc d'intégrer le tri de chaque colonne en affichant les dossiers avants les fichiers par ordre alphabétique ou inverse, le tri par date et par type. Peut-être mon prochain post si j'ai un peu de temps