Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.

Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Jan 15, 2000



Application Security Testing: An Integral Part of DevOps

GetFileDateInfo - Retrieve all date information about a file

    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 _
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

' 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, _
    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 hFile

End Function
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date