begin process at 2012 02 16 00:20:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date & Heure

 > SETFILEDATE

SETFILEDATE


 Information sur la source

 Description

Un module pour modifier les heures de création, de dernière lecture et de modification d'un fichier en VB.NET

Adapté de souces VB6. Toujours bien utiles les APIs.

Source

  • Imports VB = Microsoft.VisualBasic
  • Module FileDate
  • Private Structure FILETIME
  • Dim LowDateTime As Integer
  • Dim HighDateTime As Integer
  • End Structure
  • Private Structure SYSTEMTIME
  • Dim sYear As Short
  • Dim sMonth As Short
  • Dim sDayOfWeek As Short
  • Dim sDay As Short
  • Dim sHour As Short
  • Dim sMinute As Short
  • Dim sSecond As Short
  • Dim sMilliseconds As Short
  • End Structure
  • Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, ByVal lpSecurityAttributes As Integer, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As Integer) As Integer
  • Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Integer, ByRef lpCreationTime As FILETIME, ByRef lpLastAccessTime As FILETIME, ByRef lpLastWriteTime As FILETIME) As Integer
  • Private Declare Function SystemTimeToFileTime Lib "kernel32" (ByRef lpSystemTime As SYSTEMTIME, ByRef lpFileTime As FILETIME) As Integer
  • Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
  • Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (ByRef lpLocalFileTime As FILETIME, ByRef lpFileTime As FILETIME) As Integer
  • 'Modifi les dates d'un fichier
  • Public Function FileSetDate(ByVal sFileName As String, ByVal dFileDate As Date, Optional ByRef bSetCreationTime As Boolean = False, Optional ByRef bSetLastAccessedTime As Boolean = False, Optional ByRef bSetLastModified As Boolean = False) As Boolean
  • Const GENERIC_WRITE As Integer = &H40000000
  • Const OPEN_EXISTING As Short = 3
  • Const FILE_SHARE_READ As Short = &H1S
  • Const FILE_SHARE_WRITE As Short = &H2S
  • Dim lhwndFile As Integer
  • Dim tSystemTime As SYSTEMTIME
  • Dim tLocalTime, tFileTime As FILETIME
  • tSystemTime.sYear = Year(dFileDate)
  • tSystemTime.sMonth = Month(dFileDate)
  • tSystemTime.sDay = VB.Day(dFileDate)
  • tSystemTime.sDayOfWeek = Weekday(dFileDate) - 1
  • tSystemTime.sHour = Hour(dFileDate)
  • tSystemTime.sMinute = Minute(dFileDate)
  • tSystemTime.sSecond = Second(dFileDate)
  • tSystemTime.sMilliseconds = 0
  • 'Ouvre le fichier pour obtenir le handle
  • lhwndFile = CreateFile(sFileName, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)
  • If lhwndFile Then
  • 'Fichier ouvert
  • 'Converti de l'heure systeme a l'heure locale
  • SystemTimeToFileTime(tSystemTime, tLocalTime)
  • 'Converti l'heure locale en heure GMT
  • LocalFileTimeToFileTime(tLocalTime, tFileTime)
  • 'Change les propriétés date/time du fichier
  • FileSetDate = True
  • If bSetCreationTime Then
  • FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, tFileTime, Nothing, Nothing))
  • End If
  • If bSetLastAccessedTime Then
  • FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, Nothing, tFileTime, Nothing))
  • End If
  • If bSetLastModified Then
  • FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, Nothing, Nothing, tFileTime))
  • End If
  • 'Ferme le fichier
  • Call CloseHandle(lhwndFile)
  • End If
  • End Function
  • End Module
Imports VB = Microsoft.VisualBasic
Module FileDate
    Private Structure FILETIME
        Dim LowDateTime As Integer
        Dim HighDateTime As Integer
    End Structure

    Private Structure SYSTEMTIME
        Dim sYear As Short
        Dim sMonth As Short
        Dim sDayOfWeek As Short
        Dim sDay As Short
        Dim sHour As Short
        Dim sMinute As Short
        Dim sSecond As Short
        Dim sMilliseconds As Short
    End Structure

    Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, ByVal lpSecurityAttributes As Integer, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As Integer) As Integer
    Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Integer, ByRef lpCreationTime As FILETIME, ByRef lpLastAccessTime As FILETIME, ByRef lpLastWriteTime As FILETIME) As Integer
    Private Declare Function SystemTimeToFileTime Lib "kernel32" (ByRef lpSystemTime As SYSTEMTIME, ByRef lpFileTime As FILETIME) As Integer
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
    Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (ByRef lpLocalFileTime As FILETIME, ByRef lpFileTime As FILETIME) As Integer

    'Modifi les dates d'un fichier
    Public Function FileSetDate(ByVal sFileName As String, ByVal dFileDate As Date, Optional ByRef bSetCreationTime As Boolean = False, Optional ByRef bSetLastAccessedTime As Boolean = False, Optional ByRef bSetLastModified As Boolean = False) As Boolean
        Const GENERIC_WRITE As Integer = &H40000000
        Const OPEN_EXISTING As Short = 3
        Const FILE_SHARE_READ As Short = &H1S
        Const FILE_SHARE_WRITE As Short = &H2S

        Dim lhwndFile As Integer
        Dim tSystemTime As SYSTEMTIME
        Dim tLocalTime, tFileTime As FILETIME

        tSystemTime.sYear = Year(dFileDate)
        tSystemTime.sMonth = Month(dFileDate)
        tSystemTime.sDay = VB.Day(dFileDate)
        tSystemTime.sDayOfWeek = Weekday(dFileDate) - 1
        tSystemTime.sHour = Hour(dFileDate)
        tSystemTime.sMinute = Minute(dFileDate)
        tSystemTime.sSecond = Second(dFileDate)
        tSystemTime.sMilliseconds = 0

        'Ouvre le fichier pour obtenir le handle
        lhwndFile = CreateFile(sFileName, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)
        If lhwndFile Then
            'Fichier ouvert
            'Converti de l'heure systeme a l'heure locale
            SystemTimeToFileTime(tSystemTime, tLocalTime)
            'Converti l'heure locale en heure GMT
            LocalFileTimeToFileTime(tLocalTime, tFileTime)
            'Change les propriétés date/time du fichier
            FileSetDate = True
            If bSetCreationTime Then
                FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, tFileTime, Nothing, Nothing))
            End If
            If bSetLastAccessedTime Then
                FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, Nothing, tFileTime, Nothing))
            End If
            If bSetLastModified Then
                FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, Nothing, Nothing, tFileTime))
            End If
            'Ferme le fichier
            Call CloseHandle(lhwndFile)
        End If
    End Function
End Module



 Sources du même auteur

Source avec Zip Source avec une capture DEMO GDI ARC

 Sources de la même categorie

Source avec Zip Source avec une capture LES FONCTIONS DATE PAR L'EXEMPLE. par pasquet78
Source avec Zip Source avec une capture CALENDRIER, MODE D'EMPLOI par pasquet78
Source avec Zip Source avec une capture Source .NET (Dotnet) HORLOGE DIODE AVEC 3 ALARMES ET REMISE À L'HEURE par EhJoe
Source avec Zip Source avec une capture POINTEUSE HORAIRES PAR SEMAINE par VBNoob13
Source avec Zip Source avec une capture HORLOGE À AIGUILLES SIMPLEMENT DANS UN USERFORM EXCEL par bigbe

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture L'HEURE DE PLUSIEUR PAYS - HORLOGE MONDIALE par zulrigh
CHANGER DATE DE CRÉATION (DATECREATED) D'UN FICHIER EXCEL par CerberusPau
Source avec Zip Source avec une capture PROGRAMME POUR CHANGER DATE/HEURE DES FICHIERS par appstmd
CHANGER LA DATE par Lolo
ECRIRE LA DATE ET L'HEURE DANS UN FICHIER par BIG.F

Commentaires et avis

Commentaire de NHenry le 11/04/2007 11:15:40 administrateur CS

Bonjour,

Je vais être critique, mais en VB.NET il y a plus simple :
IO.File.Get/Set LastAccessTime
Pareil pour création et modification.

Sinon pour ta fonction :
Public Function FileSetDate(ByVal sFileName As String, ByVal dFileDate As Date, Optional ByRef bSetCreationTime As Boolean = False, Optional ByRef bSetLastAccessedTime As Boolean = False, Optional ByRef bSetLastModified As Boolean = False) As Boolean

Le prototype est beaucoup trop long :
Public Function FileSetDate(byval pFileName as string,byval pDate as date, byval pDates as EDates) as Boolean

Avec :
Enum EDates
    Creation=1
    LastAccess=2
    LastModifi=4
end Enum


Exemple d'appel :
FileSetDate("c:\fichier.txt",#10/10/2007#,EDates.Creation or EDates.LastAccess)

Et pour tes tests :
#  If bSetCreationTime Then
# FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, tFileTime, Nothing, Nothing))
# End If
# If bSetLastAccessedTime Then
# FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, Nothing, tFileTime, Nothing))
# End If
# If bSetLastModified Then
# FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, Nothing, Nothing, tFileTime))
# End If

devient :
#  If (pDates and EDates.Creation)>0 Then
# FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, tFileTime, Nothing, Nothing))
# End If
# If (pDates and EDates.LastAccess)>0 Then
# FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, Nothing, tFileTime, Nothing))
# End If
# If (pDates and EDates.LastModifi)>0 Then
# FileSetDate = FileSetDate And CBool(SetFileTime(lhwndFile, Nothing, Nothing, tFileTime))
# End If

C'est plus simple.

Commentaire de OneHacker le 11/04/2007 12:06:03

C'est vrai. Et aussi oubli les apis en VB.NET les API c'est plutôt en VB6.

Commentaire de hvb le 11/04/2007 17:19:30

non on oublie pas les api en vb.net, on preferera utiliser les fonctions equivalentes integrées au framework, certes, mais certaines api n'ont pas d'equivalent .NET

Commentaire de OneHacker le 11/04/2007 18:31:05

C'est vrai comme pour ouvrir les lecteurs CD :p Ou encore un fichier sont en VB.NET 2003.

Commentaire de hugoclavet le 12/04/2007 00:18:15

Merci beaucoup. Je préfère aussi utiliser les fonction du framework, mais là, je n'avais pas trouvé ça.
Je trouvais ça bizare d'être le premier a poster un code la dessus.
Si par hasard quelqu'un sait comment faire la même chose en asp, se serait bien apprécié.
Je développe un genre de client FTP. A chaque download ou upload, le fichier transféré change de date. Sur le serveur les secondes sont arrondi sans parler des conversions de fuseau horaire. Et le comble, si je download un fichier du server, la date du fichier du serveur change (bizare). Je dois donc trouver une façon de corriger les dates aprés chaque transfert. Coté local, pas de problème mais pour changer les dates du fichier coté serveur ???

Commentaire de MadM@tt le 12/04/2007 20:58:03

argh ! on va pas reprocher à quelqu'un qui utilise du .net de se servir des api ! C'est si rare ^^
Vive les api ^^

Commentaire de aryanamaria le 18/07/2007 15:32:29

c'est quoi les api

Commentaire de MadM@tt le 18/07/2007 20:20:04

Pour faire rapide les API sont des fonctions développées par microsoft pour nous faciliter la programmation à nous, programmeurs. La plupart concernent des fonctions pour agir sur windows et le système, ou alors pour faire des trucs graphiques etc... C'est très varié. Et ces fonctions sont contenues dans les DLL (par exemple kernel32.dll, ou user32.dll)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

MODIFIER DATE ET HEURE D'UN FICHIER [ par ccclooo ] Désolé, mais j'ai téchargé le logiciel "MODIFIER DATE ET HEURE D'UN FICHIER" en cliquant sur le lien "téléchargé le Zip", et an décompressant ce zip i Comparer date/heure d'un fichier avec heure systeme [ par guda ] Bonjour, J'ai besoin de chercher dans un repertoire les fichiers dont la date de création excede une heure. Je pensais faire une simple comparaison Changer la date et l'heure systeme avec VBA ou VBS [ par petitmarco ] bonjour, Je débute en VB, particulièrement VBA, et lors d'une application de gestion de stock, je doit changer la date systeme de windows à l'identiqu Date et heure modification d'un fichier sur FTP [ par RJLFRANCE ] Bonjour a tous !Juste une petite question:Comment recuperer la date et l'heure d'un fichier sur un site FTP, genre Filedatetime sur disque dur ?Merci date et heure en nom de fichier.txt [ par houp ] Bonjour Je souhaiterais avoir de l'aide sur un prog que je réalise en vb6.Mon but est d'enregistrer des données dans un fichier texte avec comme nom Ajout de l'heure et de la date dans un fichier texte. [ par norber59480 ] Bonjour tous le monde.J'enregistre des trames dans un fichier texte. Les trames sont ecrite ou fur et a mesure que je les recoit...A ce fichier de tra Modifier date du dernier accès à un fichier [ par lilinath ] Bonjour, Je désire changer la date du dernier accès à un fichier, vidéo. Je n'y arrive pas. Quelqu'un peut il m'aider. Merci pour votre aide,Bonne j DateLastAccessed pour fichier en VB6 [ par DD05 ] Bonjour,Je suis en VB6.Ci-dessous mon code qui me permet de trouver la date et l'heure du dernier accés à un fichier.Le problème c'est qu'il ne me don verifier date et heure [ par mvery ] Bonjour,Mon programme crée un fichier txt contenant la date et l'heure de la derniere action (sauvgarde) réalisé.voici l'aspect du fichier c:\log.txt2 Changer DATE de Windows [ par fabienfs ] Bonjour, Je cherche à pouvoir modifier la date de Windows en VB.Net. Le but n'est donc pas de modifier la date de Windows dans mon appli mai bien mod


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,190 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales