Function Reference

_Date_Time_GetFileTime

ファイルの作成、アクセス、変更日時を取得します。

#Include <Date.au3>
_Date_Time_GetFileTime($hFile)

 

パラメータ

$hFile 日時を取得するファイルのハンドル。
ファイルハンドルはCreateFile関数を使って GENERIC_READアクセス権限で作成されたものでなければなりません。

 

返し値

次の形式の配列を返します。
    [0] - ファイル作成日時の$tagFILETIME構造体
    [1] - ファイルアクセス日時の$tagFILETIME構造体
    [2] - ファイル変更日時の$tagFILETIME構造体

 

注意

全てのファイルシステムが作成時刻と最終アクセス時刻を記録するわけではありませんし、 記録していたとしても全てのファイルシステムが同じ形式でそれらを記録しているわけではありません。
例えばFATでは作成時刻は10ミリ秒の分解能、書き込み時刻は2秒の分解能、 アクセス時刻は1日の分解能(実際はアクセス日時)を持ちます。 従ってGetFileTime関数はSetFileTime関数を使用して設定したファイル時刻情報と異なる時刻情報を返すことがあります。 NTFSでは最終アクセス後のファイル最終アクセス時刻更新が最大で1時間遅れることがあります。

 

関連

_Date_Time_SetFileTime, $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("Time", 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("Unable to create file")
    $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("Unable to open file")
    $aTime = _Date_Time_GetFileTime($hFile)
    _WinAPI_CloseHandle($hFile)

    MemoWrite("Created ..: " & _Date_Time_FileTimeToStr($aTime[0]))
    MemoWrite("Accessed .: " & _Date_Time_FileTimeToStr($aTime[1]))
    MemoWrite("Modified .: " & _Date_Time_FileTimeToStr($aTime[2]))

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
   
    FileDelete(@ScriptDir & "\Test.xyz")

EndFunc   ;==>_Main

; メモコントロールに1行書き込む
Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite