Declare Function CompareFileTime Lib "kernel32" (lpFileTime1 As FILETIME,_ lpFileTime2 As FILETIME) As Long
CompareFileTime сравнивает две даты, хранимые в FILETIME, определяя более раннюю дату в хронологическом порядке. Если первая дата более ранняя, чем вторая, то возвращается -1. Если даты совпадают, то функция возвращает 0. Если первая дата более поздняя по времени, чем вторая, то возвращается 1.
' Сравниваем дату создания файла autoexec.bat ' с какой-нибудь датой Dim hfile As Long ' описатель файла Dim ctime As FILETIME ' время создания файла Dim atime As FILETIME ' время последнего открытия файла Dim wtime As FILETIME ' время последнего изменения файла Dim anytime As SYSTEMTIME ' установим какую-нибудь дату(8 марта 2001) Dim anyfiletime As FILETIME ' дата в привычном формате Dim comptimes As Long ' результат сравнения двух дат Dim retval As Long ' возвращаемое значение ' Получаем описатель файла hfile = CreateFile("C:\autoexec.bat", GENERIC_READ, FILE_SHARE_READ, ByVal CLng(0), OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, 0) If hfile = -1 Then Debug.Print "Не могу открыть указанный файл" End ' выходим из программы End If ' Получаем время создания, последнего открытия и изменения файла retval = GetFileTime(hfile, ctime, atime, wtime) ' Установим дату 8 марта 2001 как anytime anytime.wMonth = 3: anytime.wDay = 8: anytime.wYear = 2001 anytime.wHour = 0: anytime.wMinute = 0: anytime.wSecond = 0 ' конвертируем anytime в формат FILETIME для сравнения с ctime retval = SystemTimeToFileTime(anytime, anyfiletime) ' Сравниваем две даты comptimes = CompareFileTime(ctime, anyfiletime) If comptimes = -1 Then Debug.Print "Файл создан перед 8 марта 2001 года" If comptimes = 0 Then Debug.Print "Файл создан в полночь 8 марта 2001 года" If comptimes = 1 Then Debug.Print "Файл создан после 8 марта 2001 года" ' Закрываем файл retval = CloseHandle(hfile)