devxlogo

GetFileDateInfo – Retrieve all date information about a file

GetFileDateInfo – Retrieve all date information about a file

Private Type SYSTEMTIME    wYear As Integer    wMonth As Integer    wDayOfWeek As Integer    wDay As Integer    wHour As Integer    wMinute As Integer    wSecond As Integer    wMilliseconds As IntegerEnd TypePrivate Type FILETIME    dwLowDateTime As Long    dwHighDateTime As LongEnd TypePrivate Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal _    lpFileName As String, ByVal dwDesiredAccess As Long, _    ByVal dwShareMode As Long, ByVal NoSecurity As Long, _    ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _    ByVal hTemplateFile As Long) As LongPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As _    LongPrivate Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, _    lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, _    lpLastWriteTime As FILETIME) As LongPrivate Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As _    FILETIME, lpSystemTime As SYSTEMTIME) As LongPrivate Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As _    FILETIME, lpLocalFileTime As FILETIME) As LongPrivate Const GENERIC_READ = &H80000000Private Const FILE_SHARE_READ = &H1Private Const FILE_SHARE_WRITE = &H2Private Const OPEN_EXISTING = 3Private Const INVALID_HANDLE_VALUE = -1' Retrieve the Create date, Modify (write) date and Last Access date of' the specified file. Returns True if successful, False otherwise.Function GetFileTimeInfo(ByVal FileName As String, Optional CreateDate As Date, _    Optional ModifyDate As Date, Optional LastAccessDate As Date) As Boolean    Dim hFile As Long    Dim ftCreate As FILETIME    Dim ftModify As FILETIME    Dim ftLastAccess As FILETIME    Dim ft As FILETIME    Dim st As SYSTEMTIME        ' open the file, exit if error    hFile = CreateFile(FileName, GENERIC_READ, _        FILE_SHARE_READ Or FILE_SHARE_WRITE, 0&, OPEN_EXISTING, 0&, 0&)    If hFile = INVALID_HANDLE_VALUE Then Exit Function        ' read date information    If GetFileTime(hFile, ftCreate, ftLastAccess, ftModify) Then        ' non zero means successful        GetFileTimeInfo = True                ' convert result to date values        ' first, convert UTC file time to local file time        FileTimeToLocalFileTime ftCreate, ft        ' then convert to system time        FileTimeToSystemTime ft, st        ' finally, make up the Date value        CreateDate = DateSerial(st.wYear, st.wMonth, _            st.wDay) + TimeSerial(st.wHour, st.wMinute, _            st.wSecond) + (st.wMilliseconds / 86400000)                ' do the same for the ModifyDate        FileTimeToLocalFileTime ftModify, ft        FileTimeToSystemTime ft, st        ModifyDate = DateSerial(st.wYear, st.wMonth, _            st.wDay) + TimeSerial(st.wHour, st.wMinute, _            st.wSecond) + (st.wMilliseconds / 86400000)        ' and for LastAccessDate        FileTimeToLocalFileTime ftLastAccess, ft        FileTimeToSystemTime ft, st        LastAccessDate = DateSerial(st.wYear, st.wMonth, _            st.wDay) + TimeSerial(st.wHour, st.wMinute, _            st.wSecond) + (st.wMilliseconds / 86400000)    End If        ' close the file, in all cases    CloseHandle hFileEnd Function

devx-admin

Share the Post: