Salut,
J'ai besoin de changer la date de cr=E9ation de fichiers=20
divers.
existe t-il une methode me permettant de modifier la date=20
de cr=E9artion de fichiers.
la methode DateCreated de l'objet FSO est en lecture seule
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Bonjour/soir,
En premier, je te conseille de lire la fiche suivant de la faq: http://faq.vb.free.fr/index.php?question6
Ensuite, je te conseille de jetter un oeil à l'API SetFileTime: http://msdn.microsoft.com/library/en-us/sysinfo/base/setfiletime.asp
Voici un exemple de code permettant de *retrouver* la date de création d'un fichier: 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
Tu peux le modifier pour définir la date sachant que la déclaration de l'PI SetFileTime est la suivante: Public Declare Function SetFileTime _ Lib "kernel32" _ Alias "SetFileTime" _ ( _ ByVal hFile As Long, _ lpCreationTime As FILETIME, _ lpLastAccessTime As FILETIME, _ lpLastWriteTime As FILETIME _ ) _ As Long -- François Picalausa (MVP VB) FAQ VB : http://faq.vb.free.fr MSDN : http://msdn.microsoft.com
"Gerald" a écrit dans le message de news:000501c36a62$25a3d8e0$
Salut, J'ai besoin de changer la date de création de fichiers divers. existe t-il une methode me permettant de modifier la date de créartion de fichiers.
la methode DateCreated de l'objet FSO est en lecture seule
merci
Bonjour/soir,
En premier, je te conseille de lire la fiche suivant de la faq:
http://faq.vb.free.fr/index.php?question6
Ensuite, je te conseille de jetter un oeil à l'API SetFileTime:
http://msdn.microsoft.com/library/en-us/sysinfo/base/setfiletime.asp
Voici un exemple de code permettant de *retrouver* la date de création d'un
fichier:
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
Tu peux le modifier pour définir la date sachant que la déclaration de l'PI
SetFileTime est la suivante:
Public Declare Function SetFileTime _
Lib "kernel32" _
Alias "SetFileTime" _
( _
ByVal hFile As Long, _
lpCreationTime As FILETIME, _
lpLastAccessTime As FILETIME, _
lpLastWriteTime As FILETIME _
) _
As Long
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Gerald" <gerald.andrez@free.fr> a écrit dans le message de
news:000501c36a62$25a3d8e0$a501280a@phx.gbl
Salut,
J'ai besoin de changer la date de création de fichiers
divers.
existe t-il une methode me permettant de modifier la date
de créartion de fichiers.
la methode DateCreated de l'objet FSO est en lecture seule
En premier, je te conseille de lire la fiche suivant de la faq: http://faq.vb.free.fr/index.php?question6
Ensuite, je te conseille de jetter un oeil à l'API SetFileTime: http://msdn.microsoft.com/library/en-us/sysinfo/base/setfiletime.asp
Voici un exemple de code permettant de *retrouver* la date de création d'un fichier: 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
Tu peux le modifier pour définir la date sachant que la déclaration de l'PI SetFileTime est la suivante: Public Declare Function SetFileTime _ Lib "kernel32" _ Alias "SetFileTime" _ ( _ ByVal hFile As Long, _ lpCreationTime As FILETIME, _ lpLastAccessTime As FILETIME, _ lpLastWriteTime As FILETIME _ ) _ As Long -- François Picalausa (MVP VB) FAQ VB : http://faq.vb.free.fr MSDN : http://msdn.microsoft.com
"Gerald" a écrit dans le message de news:000501c36a62$25a3d8e0$
Salut, J'ai besoin de changer la date de création de fichiers divers. existe t-il une methode me permettant de modifier la date de créartion de fichiers.
la methode DateCreated de l'objet FSO est en lecture seule