Code: Select all
Procedure SetFolderCreationDate(folder.s, date.l)
; netmaestro July 2007
#FILE_SHARE_DELETE = 4
Protected ft.filetime
Protected st.SYSTEMTIME
Protected tz.TIME_ZONE_INFORMATION
Protected result.l
GetTimeZoneInformation_(@tz)
date = AddDate(date, #PB_Date_Minute, tz\Bias)
If tz\DaylightDate
date = AddDate(date, #PB_Date_Minute, tz\DaylightBias)
EndIf
With st
\wYear = Year(date)
\wMonth = Month(date)
\wDay = Day(date)
\wHour = Hour(date)
\wMinute = Minute(date)
\wSecond = Second(date)
EndWith
SystemTimeToFileTime_(@st, @ft)
DesiredAccess = #GENERIC_READ|#GENERIC_WRITE
ShareMode = #FILE_SHARE_READ|#FILE_SHARE_DELETE
Disposition = #OPEN_EXISTING
Flags = #FILE_FLAG_BACKUP_SEMANTICS
FolderHandle = CreateFile_(folder, DesiredAccess, ShareMode, 0, Disposition, Flags, 0)
If FolderHandle
result = SetFileTime_(FolderHandle, @ft, #Null, #Null)
CloseHandle_(FolderHandle)
Else
result = 0
EndIf
ProcedureReturn result
EndProcedure
; Test proggie:
; Set the chosen folder creation time to December 25, 2007 10:30 pm
path.s = PathRequester("Choose a Folder:", GetPathPart(GetCurrentDirectory()))
Debug SetFolderCreationDate(path, ParseDate("%yy/%mm/%dd/%hh/%ii/%ss", "07/12/25/22/30/00"))