Funktionsreferenz

_Date_Time_SetFileTime

Setzt das Datum und die Zeit einer Datei für den Status Erstellt, letzter Zugriff und Verändert

#Include <Date.au3>
_Date_Time_SetFileTime($hFile, $pCreateTime, $pLastAccess, $pLastWrite)

 

Parameter

$hFile Handle zu der Datei. Das Datei Handle muss mit der Funktion CreateFile und FILE_WRITE_ATTRIBUTES Zugriffsrechten erstellt worden sein.
$pCreateTime Zeiger auf eine $tagFILETIME Struktur, die das neue Datum und Uhrzeit für 'Datei erstellt' beinhaltet.
Wenn '0' gesetzt wird, wird diese Information nicht verändert.
$pLastAccess Zeiger auf eine $tagFILETIME Struktur die das neue Datum und Uhrzeit für 'letzter Zugriff' beinhaltet.
Die Zeitangabe für 'letzter Zugriff' gilt auch für den letzten Schreib- /Lesezugriff oder (im Falle einer
ausführbaren Datei) deren letzte Ausführung. Wenn '0' gesetzt wird, wird diese Information nicht verändert.
Um den Zeitstempel einer Datei für 'letzter Zugriff' auch nach Zugriff unverändert zu bewahren,
ist die Funktion _Date_Time_SetFileTime und dieser Parameter mit -1 aufzurufen,
bevor das Handle der Datei beendet wird.
$pLastWrite Zeiger auf eine $tagFILETIME Struktur, die das neue Datum und Uhrzeit für 'Datei verändert' beinhaltet.
Wenn '0' gesetzt wird, wird diese Information nicht verändert.

 

Rückgabewert

Erfolg: True
Fehler: False

 

Bemerkungen

Nicht alle Dateisysteme können die Daten für 'Erstellung' und 'letzten Zugriff' speichern und die Dateisysteme
speichern diese Information auch nicht immer in der selben Art und Weise.
Als Beispiel, in FAT-Dateisystemen hat die 'Erstellungszeit' eine Auflösung von 10 Millisekunden,
'letzte Änderung' eine Auflösung von 2 Sekunden und 'letzter Zugriff' hat eine Auflösung von 1 Tag (im Grunde also nur das Datum).
Daher gibt die GetFileTime Funktion möglicherweise nicht die selben Zeiten zurück, wie diese durch SetFileTime erstellt wurden.
NTFS verzögert das Erstellen des Zeitstempels für 'letzter Zugriff' bis zu einer Stunde nach dem letzten Zugriff.

 

Verwandte Funktionen

_Date_Time_GetFileTime, $tagFILETIME

 

Beispiel


#include <GuiConstantsEx.au3>
#include <WinAPI.au3>
#include <Date.au3>
#include <WindowsConstants.au3>

Global $iMemo

_Main()

Func _Main()
    Local $hGUI, $hFile, $tFile, $aTime

    ; Erstellen der GUI
    $hGUI = GUICreate("Zeit", 400, 300)
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 296, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()

    ; Erzeugen einer Test Datei und setzen der Dateizeit
    $hFile = _WinAPI_CreateFile(@ScriptDir & "\Test.xyz", 1)
    If $hFile = 0 Then _WinAPI_ShowError("Die Datei konnte nicht erstellt werden")
    $tFile = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR, @HOUR, @MIN, @SEC)
    $pFile = DllStructGetPtr($tFile)
    _Date_Time_SetFileTime($hFile, $pFile, $pFile, $pFile)
    _WinAPI_CloseHandle($hFile)

    ; Liest die Dateizeit
    $hFile = _WinAPI_CreateFile(@ScriptDir & "\Test.xyz", 2)
    If $hFile = 0 Then _WinAPI_ShowError("Die Datei konnte nicht geöffnet werden")
    $aTime = _Date_Time_GetFileTime($hFile)
    _WinAPI_CloseHandle($hFile)

    MemoWrite("Erstellt ..: " & _Date_Time_FileTimeToStr($aTime[0]))
    MemoWrite("Letzter Zugriff .: " & _Date_Time_FileTimeToStr($aTime[1]))
    MemoWrite("Letzte Änderung .: " & _Date_Time_FileTimeToStr($aTime[2]))

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    FileDelete(@ScriptDir & "\Test.xyz")

EndFunc   ;==>_Main

; Schreibt eine Zeile in das Memo Control
Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite