Функция _Date_Time_SetFileTime

         Описание функции


_Date_Time_SetFileTime

Устанавливает дату и время создания файла, последнего доступа и изменения

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

Параметры

$hFile Дескриптор файла. Дескриптор должен быть создан с помощью функции CreateFile с правами доступа FILE_WRITE_ATTRIBUTES.
$pCreateTime Указатель на структуру $tagFILETIME, которая содержит новую дату и время создания файла. 0, если приложению не требуется эта информация.
$pLastAccess Указатель на структуру $tagFILETIME, которая содержит новую дату и время последнего доступа к файлу. Последний доступ включает последнее время записи в файл, чтение из него, или (в случае с исполняемыми файлами) запуска. 0, если приложению не требуется эта информация. Для сохранения существующего времени последнего доступа к файлу, даже после обращения к нему, вызовите SetFileTime с параметром -1 до закрытия дескриптора файла.
$pLastWrite Указатель на структуру $tagFILETIME, которая содержит новую дату и время последней записи в файл. 0, если приложению не требуется указывать эту информацию.

Возвращаемое значение

Успех:Возвращает True
Ошибка:Возвращает False

Примечания

Не все файловое системы могут записывать время создания и доступа, и не все файловые системы записывают их таким образом. Например, в FAT, время создания имеет разрешение в 10 миллисекунд, время записи имеет разрешение в 2 секунды, и время доступа имеет разрешение в 1 день (на самом деле дату доступа). Таким образом, функция GetFileTime может не вернуть информацию о файловом времени, установленном через SetFileTime. В NTFS задержка обновления времени последнего доступа к файлу составляет один час после последнего доступа.

См. также

_Date_Time_GetFileTime, $tagFILETIME

Пример

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

Global $iMemo

_Main()

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

    ; Создаёт GUI
    $hGUI = GUICreate("Время", 400, 300)
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 296, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()

    ; Создание тестового файла и установка времени для него
    $hFile = _WinAPI_CreateFile(@ScriptDir & "\Test.xyz", 1)
    if $hFile = 0 then _WinAPI_ShowError("Не удалось создать файл")
    $tFile = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR, @HOUR, @MIN, @SEC)
    $pFile = DllStructGetPtr($tFile)
    _Date_Time_SetFileTime($hFile, $pFile, $pFile, $pFile)
    _WinAPI_CloseHandle($hFile)

    ; Чтение времени файла
    $hFile = _WinAPI_CreateFile(@ScriptDir & "\Test.xyz", 2)
    if $hFile = 0 then _WinAPI_ShowError("Не удалось открыть файл")
    $aTime = _Date_Time_GetFileTime($hFile)
    _WinAPI_CloseHandle($hFile)

    MemoWrite("Создан           .: " & _Date_Time_FileTimeToStr($aTime[0]))
    MemoWrite("Последний доступ .: " & _Date_Time_FileTimeToStr($aTime[1]))
    MemoWrite("Изменен          .: " & _Date_Time_FileTimeToStr($aTime[2]))

    ; Цикл выполняется, пока окно не будет закрыто
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

EndFunc   ;==>_Main

; Записывает строку в элемент для заметок
Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite