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 Integer End Type
Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type
Private 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 Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As _ Long Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, _ lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, _ lpLastWriteTime As FILETIME) As Long Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As _ FILETIME, lpSystemTime As SYSTEMTIME) As Long Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As _ FILETIME, lpLocalFileTime As FILETIME) As Long
Private Const GENERIC_READ = &H80000000 Private Const FILE_SHARE_READ = &H1 Private Const FILE_SHARE_WRITE = &H2 Private Const OPEN_EXISTING = 3 Private Const INVALID_HANDLE_VALUE = -1
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 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 If GetFileTime(hFile, ftCreate, ftLastAccess, ftModify) Then GetFileTimeInfo = True FileTimeToLocalFileTime ftCreate, ft FileTimeToSystemTime ft, st CreateDate = DateSerial(st.wYear, st.wMonth, _ st.wDay) + TimeSerial(st.wHour, st.wMinute, _ st.wSecond) + (st.wMilliseconds / 86400000) FileTimeToLocalFileTime ftModify, ft FileTimeToSystemTime ft, st ModifyDate = DateSerial(st.wYear, st.wMonth, _ st.wDay) + TimeSerial(st.wHour, st.wMinute, _ st.wSecond) + (st.wMilliseconds / 86400000) 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 CloseHandle hFile
End Function |