Страница: 1 |
Страница: 1 |
Вопрос: Изменить FileTime…
Добавлено: 06.04.05 19:21
Автор вопроса: Mihalыch | ICQ: 373-509-101
Всем привет!
Странно, с помощью этого кода, у меня получается установить дату не ранее 01.01.1980 00:00:01. Подскажите почему?
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
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 Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes 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 SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long
Private Declare Function SetFileTime Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpCreationTime As FILETIME, ByRef lpLastAccessTime As FILETIME, ByRef lpLastWriteTime As FILETIME) As Long
Private Sub ChengeFileTime()
Dim nDate As Date
Dim hFile As Long
Dim nFileTime As FILETIME
Dim nLocalTime As FILETIME
Dim SysTime As SYSTEMTIME
nDate = "01.01.1980 00:00:01"
With SysTime
.wYear = Year(nDate)
.wMonth = Month(nDate)
.wDay = Day(nDate)
.wDayOfWeek = Weekday(nDate) - 1
.wHour = Hour(nDate)
.wMinute = Minute(nDate)
.wSecond = Second(nDate)
.wMilliseconds = 0
End With
SystemTimeToFileTime SysTime, nLocalTime
LocalFileTimeToFileTime nLocalTime, nFileTime
hFile = CreateFile("C:\1.txt", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
SetFileTime hFile, nFileTime, nFileTime, nFileTime
CloseHandle hFile
End Sub
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 06.04.05 20:30
По моему BIOS меньше не поддерживает. А зачем тебе?
Номер ответа: 2
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #2
Добавлено: 06.04.05 20:43
Просто интересно. Вроде доступный диапазон всегда был 01.01.1900 – 31.12.3000.
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 06.04.05 21:09
Уверен, что 1980, а не 1970? Если 1970, то понятно, unix-time, а вот 1980... Загляни в Язык и региональные стандарты > Региональные параметры > Настройка > Дата
Номер ответа: 4
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #4
Добавлено: 07.04.05 13:32
01.01.1980 00:00:01 до етого времени компов для юзеров небыло.
Номер ответа: 5
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #5
Добавлено: 07.04.05 13:58
Наверное Barsik ближе всего к истине, хотя 80 не такой уж далекий год, согласен в СССР не было, а у «НИХ»???
Sharp, я посмотрел куда ты указал, но там речь идет только о годах введенных двумя цифрами, и к тому же 1931 – 2029…
Ладно, это не очень важно, я же написал, что это просто любопытство. Хотя в связи с этим у меня возник вопрос, как изменить дату создания папки?
Всем спасибо!
Номер ответа: 6
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #6
Добавлено: 07.04.05 16:16
Позырь справку по FileTimeToDosDateTime...
Так что, видать, это в целях совместимости, чтобы не удивлять старые проги
Что касается папок - CreateFile хавает и папки... Просто создавать их нельзя с её помощью, а открывать можно...