Page 1 of 1

Set Creation Date for Folder

Posted: Mon Jul 16, 2007 4:14 am
by netmaestro

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"))