Définit la date/heure de création, d'accès et modification d'un fichier
#include <Date.au3>
_Date_Time_SetFileTime ( $hFile, $tCreateTime, $tLastAccess, $tLastWrite )
$hFile | Handle vers le fichier. Le handle du fichier doit avoir été créé à l'aide de la fonction CreateFile avec le droit d'accès FILE_WRITE_ATTRIBUTES. |
$tCreateTime | Structure $tagFILETIME qui contient les nouvelles date et heure de création du fichier. Cette valeur est 0 si l'application n'a pas besoin de définir cette information. |
$tLastAccess | Structure $tagFILETIME qui contient les nouvelles date et heure d'accès au fichier. La date de dernier accès inclut la date de dernère écriture, de lecture, ou (dans le cas des fichiers exécutables) d'exécution. Cette valeur peut être 0 si l'application n'a pas besoin de définir cette information. Pour conserver l'heure du dernier accès existant pour un fichier, même après avoir accédé à ce fichier, appelez SetFileTime avec ce paramètre défini à -1 avant de fermer le handle du fichier. |
$tLastWrite | Structure $tagFILETIME qui contient les nouvelles date et heure du fichier qui a été écrit. Cette valeur peut être 0 si l'application ne veut pas définir cette information. |
Succès: | Retourne True |
Échec: | Retourne False |
Les dates de création et du dernier accès ne peuvent être enregistrées sur tous les systèmes de fichiers et l'enregistrement de celles-ci peut ne pas se faire de la même manière.
Par exemple, en FAT, la date de création a une précision de 10 millisecondes, la date de modification a une précision de 2 secondes, et la date du dernier accès a une précision de 1 jour (c'est bien ça, la date du dernier accès). Par conséquent, la fonction _Date_Time_GetFileTime() peut ne pas retourner les mêmes informations d'horodatage du fichier préalablement définies à l'aide de _Date_Time_SetFileTime().
Les délais du système de fichiers NTFS mettent à jour le dernier temps d'accès pour un fichier par l'ajout d'une heure après le dernier accès.
$tagFILETIME, _Date_Time_GetFileTime
#include <Date.au3> #include <GUIConstantsEx.au3> #include <WinAPIError.au3> #include <WinAPIFiles.au3> #include <WinAPIHObj.au3> #include <WindowsConstants.au3> Global $g_idMemo Example() Func Example() Local $hFile, $tFile, $aTime Local $sTempFile = @TempDir & "\Test.xyz" ; Crée la GUI GUICreate("Temps", 400, 300) $g_idMemo = GUICtrlCreateEdit("", 2, 2, 396, 296, $WS_VSCROLL) GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New") GUISetState(@SW_SHOW) ; Créer un fichier de test et définit les dates du fichier $hFile = _WinAPI_CreateFile($sTempFile, 1) If $hFile = 0 Then _WinAPI_ShowError("Impossible de créer le fichier") $tFile = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR, @HOUR, @MIN, @SEC) _Date_Time_SetFileTime($hFile, $tFile, $tFile, $tFile) _WinAPI_CloseHandle($hFile) ; Lit les dates du fichier $hFile = _WinAPI_CreateFile($sTempFile, 2) If $hFile = 0 Then _WinAPI_ShowError("Impossible d'ouvrir le fichier") $aTime = _Date_Time_GetFileTime($hFile) _WinAPI_CloseHandle($hFile) MemoWrite("Création ......: " & _Date_Time_FileTimeToStr($aTime[0])) MemoWrite("Accès .........: " & _Date_Time_FileTimeToStr($aTime[1])) MemoWrite("Modification ..: " & _Date_Time_FileTimeToStr($aTime[2])) ; Boucle jusqu'à ce que l'utilisateur quitte. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE FileDelete($sTempFile) EndFunc ;==>Example ; Écrit une ligne dans le contrôle mémo Func MemoWrite($sMessage) GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1) EndFunc ;==>MemoWrite