[VB] Datum van file wijzigen

Pagina: 1
Acties:

  • black_snake
  • Registratie: November 2001
  • Laatst online: 01-04-2022
Ben al een tijdje aan het zoeken hoe ik vanuit Visual Basic de creation date van een file kan wijzigen, maar kan het nergens vinden. Weet misschien iemand of dit (en hoe) mogelijk is?

thx

Verwijderd

code:
1
2
3
Public Declare Function SetFileTime Lib "kernel32" _
Alias "SetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, _
lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long

Staat in de API-viewer.
Als je verder op Google gaat zoeken, vind je vast wat voorbeelden...

  • black_snake
  • Registratie: November 2001
  • Laatst online: 01-04-2022
mja, die had ik ook al :-)

Heb nu ook een voorbeeld gevonden maar kan der nie echt goed aan uit.

edit:

Heb al wat ervaring met VB maar kan aan deze code niet echt goed aan uit. Kan iemand me ff op weg zetten?
[code]Private Const OF_READ = &H0
Private Const OF_WRITE = &H1
Private Const OF_READWRITE = &H2
Private Const OF_SHARE_COMPAT = &H0
Private Const OF_SHARE_EXCLUSIVE = &H10
Private Const OF_SHARE_DENY_WRITE = &H20
Private Const OF_SHARE_DENY_READ = &H30
Private Const OF_SHARE_DENY_NONE = &H40
Private Const OF_PARSE = &H100
Private Const OF_DELETE = &H200
Private Const OF_VERIFY = &H400
Private Const OF_CANCEL = &H800
Private Const OF_CREATE = &H1000
Private Const OF_PROMPT = &H2000
Private Const OF_EXIST = &H4000
Private Const OF_REOPEN = &H8000

Private Const OFS_MAXPATHNAME = 128

' OpenFile() Structure
Private Type OFSTRUCT
cBytes As Byte
fFixedDisk As Byte
nErrCode As Integer
Reserved1 As Integer
Reserved2 As Integer
szPathName(OFS_MAXPATHNAME) As Byte
End Type

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 CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Declare Function GetFileTime Lib "kernel32" _
(ByVal hFile As Long, lpCreationTime As FILETIME, _
lpLastAccessTime As FILETIME, lpLastWriteTime _
As FILETIME) As Long
Private Declare Function FileTimeToSystemTime _
Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As _
SYSTEMTIME) As Long
Private Declare Function OpenFile Lib "kernel32" (ByVal _
lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal _
wStyle As Long) As Long
' Note I've changed the lpLastAccessTime from a FILETIME _
' to a LONG, because I'm going to pass a 0 (Null) _
'cause I don't want to set it.
Private Declare Function SetFileTime Lib "kernel32" _
(ByVal hFile As Long, lpCreationTime As FILETIME, ByVal _
lpLastAccessTime As Long, lpLastWriteTime As FILETIME)_
As Long
Private Declare Function SystemTimeToFileTime _
Lib "kernel32" (lpSystemTime As SYSTEMTIME, _
lpFileTime As FILETIME) As Long

Public Sub ChangeDate(strFile As String)
Dim hFile As Long
Dim l As Long
Dim OFS As OFSTRUCT
Dim cTime As FILETIME
Dim lTime As FILETIME
Dim lwTime As FILETIME
Dim sTime As SYSTEMTIME, F$

OFS.cBytes = Len(OFS)

F$ = strFile

hFile = OpenFile(F$, OFS, OF_WRITE)
If hFile > 0 Then
l = GetFileTime(hFile, cTime, lTime, lwTime)
l = FileTimeToSystemTime(lwTime, sTime)
sTime.wYear = 1999
sTime.wMonth = 1
sTime.wDay = 1
l = SystemTimeToFileTime(sTime, lTime)
l = SetFileTime(hFile, cTime, 0, lTime)
l = CloseHandle(hFile)
End If
End Sub[/code]
Over deze items is er immers geen help beschikbaar in de MSDN

Thx

  • black_snake
  • Registratie: November 2001
  • Laatst online: 01-04-2022
Om nog ff duidelijker te zijn, vooral tussen de *Time snap ik het verschil niet echt.

Iemand? :?

edit:

Ik slaag er enkel in om de last modified date te veranderen maar zou graag de creation date hebben...


  • black_snake
  • Registratie: November 2001
  • Laatst online: 01-04-2022
Heb iets gevonden. Sluit topic maar

Verwijderd

Op woensdag 29 mei 2002 08:53 schreef black_snake het volgende:
mja, die had ik ook al :-)
Je schreef anders dat je nergens iets kon vinden :)

Maarreh, wat was het probleem nu?

  • black_snake
  • Registratie: November 2001
  • Laatst online: 01-04-2022
In het voorbeeld hierboven kon ik enkel de modification date aanpassen. De rest kreeg ik niet gewijzigd (snap code niet helemaal). Nu heb ik op Planet Source Code een andere manier gevonden die wel alle datums aanpast.

Probleem opgelost dus :)

In ieder geval bedankt voor je hulp.

Verwijderd

Op woensdag 29 mei 2002 12:16 schreef black_snake het volgende:
snap code niet helemaal
Snap je wel dat de voorbeeld code die je postte er voor zorgt dat alleen de 'LastWriteTime' aangepast wordt?
In het voorbeeld wordt de LastWriteTime aangepast naar 1-1-1999, de LastAccessTime wordt niet overschreven en de CreationTime wordt gezet op de waarde die er al stond.

  • black_snake
  • Registratie: November 2001
  • Laatst online: 01-04-2022
Op woensdag 29 mei 2002 13:20 schreef Debbus het volgende:

[..]

Snap je wel dat de voorbeeld code die je postte er voor zorgt dat alleen de 'LastWriteTime' aangepast wordt?
In het voorbeeld wordt de LastWriteTime aangepast naar 1-1-1999, de LastAccessTime wordt niet overschreven en de CreationTime wordt gezet op de waarde die er al stond.
Jip, zover was ik al :-) Maar had geprobeerd om de CreationTime aan te passen en dit lukte niet. Ondertussen heb ik begrepen dat dit in een of ander ander speciaal formaat staat... Het verschil tussen die SYSTEMTIME en FILETIME is me echter nog niet echt duidelijk.
Pagina: 1