;Heure et Date Locale
;Nico
;Le 26/05/04
;{
; Structure Filetime
;   dwLowDateTime.l
;   dwHighDateTime.l
; EndStructure
;
; Structure SystemTime
;   wYear.w
;   wMonth.w
;   wDayOfWeek.w
;   wDay.w
;   wHour.w
;   wMinute.w
;   wSecond.w
;   wMilliseconds.w
; EndStructure 

; typedef struct _SYSTEMTIME {
;   WORD wYear;
;   WORD wMonth;
;   WORD wDayOfWeek;
;   WORD wDay;
;   WORD wHour;
;   WORD wMinute;
;   WORD wSecond;
;   WORD wMilliseconds;
;   } SYSTEMTIME, *PSYSTEMTIME;
;   


; Procedure GetTime()
;   Protected Creation1.Filetime
;   Protected DernierAcces1.Filetime
;   Protected DerniereConsultation1.Filetime
;   
;   Protected Creation2.Filetime
;   Protected DernierAcces2.Filetime
;   Protected DerniereConsultation2.Filetime
;   
;   Protected Creation3.SystemTime
;   Protected DernierAcces3.SystemTime
;   Protected DerniereConsultation3.SystemTime
;   
;   ;Hfile.l= OpenFile(0,"f:\temp2\")
;   Dossier.s="f:\aaa\"
;   hfile=CreateFile_(Dossier,#GENERIC_WRITE,#FILE_SHARE_WRITE,#Null,#OPEN_EXISTING,#FILE_FLAG_BACKUP_SEMANTICS,0)
;     If hFile = -1;"INVALID_HANDLE_VALUE"
;       MessageRequester("Erreur","Le dossier n'a pas été ouvert !",#MB_ICONERROR)
;     EndIf
;     
;   
;  
;   If Hfile
;     If GetFileTime_(Hfile,@Creation1, @DernierAcces1, @DerniereConsultation1)
;       ;bon là, j'arrète les if....
;       FileTimeToLocalFileTime_(Creation1, @Creation2)
;       FileTimeToLocalFileTime_(DernierAcces1, @DernierAcces2)
;       FileTimeToLocalFileTime_(DerniereConsultation1, @DerniereConsultation2)
;       
;       
;       If FileTimeToSystemTime_(Creation2, @Creation3)
;         MessageRequester("Info Creation",Str(Creation3\wDay)+" "+Str(Creation3\wMonth)+" "+Str(Creation3\wYear)+"  -  "+Str(Creation3\wHour)+":"+Str(Creation3\wMinute)+":"+Str(Creation3\wSecond)+":"+Str(Creation3\wMilliseconds))
;         
;         If FileTimeToSystemTime_(DernierAcces2, @DernierAcces3)
;           MessageRequester("Info Dernier Acces",Str(DernierAcces3\wDay)+"  -  "+Str(DernierAcces3\wHour)+":"+Str(DernierAcces3\wMinute))
;           
;           If FileTimeToSystemTime_(DerniereConsultation2, @DerniereConsultation3)
;             MessageRequester("Info Dernière Modification",Str(DerniereConsultation3\wDay)+"  -  "+Str(DerniereConsultation3\wHour)+":"+Str(DerniereConsultation3\wMinute))
;             
;           EndIf
;         EndIf
;       EndIf
;     EndIf
;     ;CloseFile(0)
;   EndIf
; EndProcedure
;}
;EnableExplicit
Procedure GetDateDirectory(Dossier.s, date)
  Protected Creation1.Filetime
  Protected DernierAcces1.Filetime
  Protected DerniereConsultation1.Filetime
  
  Protected Creation2.Filetime
  Protected DernierAcces2.Filetime
  Protected DerniereConsultation2.Filetime
  
  Protected Creation3.SystemTime
  Protected DernierAcces3.SystemTime
  Protected DerniereConsultation3.SystemTime
  
  Protected hfile
    ;Dossier.s="f:\aaa\"
  hfile=CreateFile_(Dossier,#GENERIC_WRITE,#FILE_SHARE_WRITE,#Null,#OPEN_EXISTING,#FILE_FLAG_BACKUP_SEMANTICS,0)
    If hFile = -1;"INVALID_HANDLE_VALUE"
      MessageRequester("Erreur","Le dossier n'a pas été ouvert !",#MB_ICONERROR)
    EndIf
     
  If Hfile
    If GetFileTime_(Hfile,@Creation1, @DernierAcces1, @DerniereConsultation1)
      
      If date=#PB_Date_Created
        FileTimeToLocalFileTime_(Creation1, @Creation2)
        FileTimeToSystemTime_(Creation2, @Creation3)
        ;MessageRequester("Info Creation",Str(Creation3\wDay)+" "+Str(Creation3\wMonth)+" "+Str(Creation3\wYear)+"  -  "+Str(Creation3\wHour)+":"+Str(Creation3\wMinute)+":"+Str(Creation3\wSecond)+":"+Str(Creation3\wMilliseconds))
        Retour_Date=Date(Creation3\wYear,Creation3\wMonth,Creation3\wDay,Creation3\wHour,Creation3\wMinute,Creation3\wSecond)
        
    ElseIf date =#PB_Date_Accessed
      FileTimeToLocalFileTime_(DernierAcces1, @DernierAcces2)
      FileTimeToSystemTime_(DernierAcces2, @DernierAcces3)
      ;MessageRequester("Info Dernier Acces",Str(DernierAcces3\wDay)+"  -  "+Str(DernierAcces3\wHour)+":"+Str(DernierAcces3\wMinute))
      Retour_Date=Date(DernierAcces3\wYear,DernierAcces3\wMonth,DernierAcces3\wDay,DernierAcces3\wHour,DernierAcces3\wMinute,DernierAcces3\wSecond)
            
    ElseIf date =#PB_Date_Modified
      FileTimeToLocalFileTime_(DerniereConsultation1, @DerniereConsultation2)
      FileTimeToSystemTime_(DerniereConsultation2, @DerniereConsultation3)
      ;MessageRequester("Info Dernière Modification",Str(DerniereConsultation3\wDay)+"  -  "+Str(DerniereConsultation3\wHour)+":"+Str(DerniereConsultation3\wMinute))
      Retour_Date=Date(DerniereConsultation3\wYear,DerniereConsultation3\wMonth,DerniereConsultation3\wDay,DerniereConsultation3\wHour,DerniereConsultation3\wMinute,DerniereConsultation3\wSecond)
            
    EndIf
     EndIf    
   EndIf
   ;Debug FormatDate("%dd/%mm/%yyyy %hh:%ii:%ss",Retour_Date)
   ProcedureReturn Retour_Date
EndProcedure

Procedure SetDateDirectory(Dossier.s, date, annee, mois, jour, rangdujour, heure, minute, seconde, milliseconde)
  Protected Creation1.SYSTEMTIME
  Protected creation2.Filetime
  Protected Creation3.SystemTime
  Protected hfile
  creation1\wYear=annee
  creation1\wMonth=mois
  If rangdujour=-1
    creation1\wDayOfWeek=DayOfWeek(Date(Annee, Mois, Jour, Heure, Minute, Seconde))
  Else
    creation1\wDayOfWeek=rangdujour
  EndIf
  
  creation1\wDay=jour
  creation1\wHour=heure
  creation1\wMinute=minute
  creation1\wSecond=seconde
  creation1\wMilliseconds=milliseconde
  
  
  
  
  
  If Dossier
    
    ;- handle dossier
    hfile=CreateFile_(Dossier,#GENERIC_WRITE,#FILE_SHARE_WRITE,#Null,#OPEN_EXISTING,#FILE_FLAG_BACKUP_SEMANTICS,0)
     ;{Flags
    ;GENERIC_READ, GENERIC_WRITE
    ;FILE_SHARE_READ=0x00000001    
    ; FILE_SHARE_WRITE=0x00000002 
    ;FILE_FLAG_BACKUP_SEMANTICS
    ; To open a directory using CreateFile, specify the FILE_FLAG_BACKUP_SEMANTICS 
    ;flag As part of dwFlagsAndAttributes. Appropriate security checks still
    ;apply when this flag is used without SE_BACKUP_NAME And SE_RESTORE_NAME
    ;privileges.
     
    If hFile = -1;"INVALID_HANDLE_VALUE"
      MessageRequester("Erreur","Le dossier n'a pas été ouvert !",#MB_ICONERROR)
    EndIf
    
    ;MessageRequester("Resultat","Handle du fichier "+chemin+" : "+Str(hfile),#PB_MessageRequester_Ok)
    SystemTimeToFileTime_(Creation1, @Creation2)
    LocalFileTimeToFileTime_(Creation2, @Creation3)
    
    If date=#PB_Date_Created
      SetFileTime_(Hfile,@Creation3, #NUL, #NUL)
    ElseIf date =#PB_Date_Accessed
      SetFileTime_(Hfile,#NUL,@Creation3, #NUL)
    ElseIf date =#PB_Date_Modified
      SetFileTime_(Hfile, #NUL, #NUL,@Creation3)
    EndIf
    
    ;EndIf
  Else
    MessageRequester("Erreur","Le fichier n'a pas été ouvert !",#MB_ICONERROR)
    End
  EndIf
  
EndProcedure

Dossier.s="f:\aaa\"
GetDateDirectory(Dossier.s, #PB_Date_Modified)














;SetTime()
; 
; Resultat = GetFileDate("f:\aaa", #PB_Date_Created)
; Debug FormatDate("%dd %mm %yyyy / %hh:%ii:%ss", Resultat)

;GetTime()

;GetTime()
; Directory$ = "C:\"   ; Énumère le contenu du répertoire C (Les sous-répertoires ne sont pas examinés) 
;   If ExamineDirectory(0, Directory$, "*.*")  
;     While NextDirectoryEntry(0)
;       If DirectoryEntryType(0) = #PB_DirectoryEntry_File
;         Type$ = " [Fichier] "
;       Else
;         Type$ = " [Sous-répertoire] "
;         Debug NextDirectoryEntry(0)
;       EndIf
;       
;       ;Debug DirectoryEntryName(0) + Type$ + "- Taille en octet : " + Str(DirectoryEntrySize(0))
;     Wend
;     FinishDirectory(0)
;   EndIf

;- Choix du fichier
;chemin.s = OpenFileRequester("Choisir un fichier", "", "Fichier texte|*.txt|All Files|*.*", 0)
; chemin.s ="f:\aaa\"
; If chemin
;        
;     ;- Ouverture du fichier
;     hfile.s=Str(CreateFile_(chemin,#GENERIC_WRITE,#FILE_SHARE_WRITE,Null,#OPEN_EXISTING,#FILE_FLAG_BACKUP_SEMANTICS,0))
;     ;GENERIC_READ, GENERIC_WRITE
;     
;     ;FILE_SHARE_READ=0x00000001    
;     ; FILE_SHARE_WRITE=0x00000002 
;     ;FILE_FLAG_BACKUP_SEMANTICS
; ;     To open a directory using CreateFile, specify the FILE_FLAG_BACKUP_SEMANTICS 
; ;     flag As part of dwFlagsAndAttributes. Appropriate security checks still
; ;     apply when this flag is used without SE_BACKUP_NAME And SE_RESTORE_NAME
; ;     privileges.
;     If hFile = "INVALID_HANDLE_VALUE"
;       MessageRequester("Erreur","Le fichier n'a pas été ouvert !",#MB_ICONERROR)
;     EndIf
;    
;     MessageRequester("Resultat","Handle du fichier "+chemin+" : "+hfile,#PB_MessageRequester_Ok)
; 
; Else
;     MessageRequester("Erreur","Le fichier n'a pas été ouvert !",#MB_ICONERROR)
;     End
; EndIf

End
; IDE Options = PureBasic 4.61 (Windows - x86)
; CursorPosition = 256
; FirstLine = 223
; Folding = -
; EnableXP
; CompileSourceDirectory