OVH Cloud OVH Cloud

Date d'un fichier

1 réponse
Avatar
Pierre Gard
Bonjour

J'ai besoin a l'aide de VB6 de connaitre la date de création d'un fichier
sur mon disque dur. Merci de m'aider dans cette besogne car il fait trop
chaud ? :-)

Meilleures salutations
Pierre-André Gard
PharmaSoft Sàrl

1 réponse

Avatar
François Picalausa
Bonjour/soir,

Le bout de code suivant pourra peut-être t'aider:
Option Explicit

Private Const GENERIC_READ = &H80000000
Private Const FILE_SHARE_READ = &H1
Private Const OPEN_EXISTING = 3
Private Const INVALID_HANDLE_VALUE = -1

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 Declare Function GetFileTime _
Lib "kernel32" _
( _
ByVal hfile As Long, _
lpCreationTime As Any, _
lpLastAccessTime As Any, _
lpLastWriteTime As Any _
) _
As Long
Private Declare Function FileTimeToSystemTime _
Lib "kernel32" _
( _
lpFileTime As FILETIME, _
lpSystemTime As SYSTEMTIME _
) _
As Long
Private Declare Function CreateFile _
Lib "kernel32" _
Alias "CreateFileA" _
( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
lpSecurityAttributes As Any, _
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 LocalFileTimeToFileTime _
Lib "kernel32" _
( _
lpLocalFileTime As FILETIME, _
lpFileTime As FILETIME _
) _
As Long
Private Declare Function FileTimeToLocalFileTime _
Lib "kernel32" _
( _
lpFileTime As FILETIME, _
lpLocalFileTime As FILETIME _
) _
As Long

Function GetFileCreationTime(FilePath As String) As Date
Dim hfile As Long
Dim fileCreationTime As FILETIME
Dim sysCreationTime As SYSTEMTIME
Dim fileLocalTime As FILETIME
hfile = CreateFile( _
FilePath & vbNullChar, _
GENERIC_READ, _
FILE_SHARE_READ, _
ByVal 0&, _
OPEN_EXISTING, _
0, _
0)

If hfile <> INVALID_HANDLE_VALUE Then
If GetFileTime(hfile, _
fileCreationTime, _
ByVal 0&, _
ByVal 0& _
) Then

If FileTimeToLocalFileTime( _
fileCreationTime, _
fileLocalTime _
) Then
If FileTimeToSystemTime( _
fileLocalTime, _
sysCreationTime _
) Then
GetFileCreationTime = DateSerial( _
sysCreationTime.wYear, _
sysCreationTime.wMonth, _
sysCreationTime.wDay _
) _
+ _
TimeSerial( _
sysCreationTime.wHour, _
sysCreationTime.wMinute, _
sysCreationTime.wSecond _
)
Else
Err.Raise 1003, , _
"Impossible de convertir la date de création du
fichier en date système"
End If
Else
Err.Raise 1002, , _
"Impossible de convertir la date de création du fichier
en date locale de fichier"
End If
Else
Err.Raise 1001, , _
"Impossible de retrouver la date de création du fichier"
End If

CloseHandle hfile
Else
Err.Raise 1000, , "Impossible d'ouvrir le fichier"
End If
End Function


--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


Pierre Gard wrote:
Bonjour

J'ai besoin a l'aide de VB6 de connaitre la date de création d'un
fichier sur mon disque dur. Merci de m'aider dans cette besogne car
il fait trop chaud ? :-)

Meilleures salutations
Pierre-André Gard
PharmaSoft Sàrl