1. Creare un nuovo progetto in VB4
(32). Form1 è creata di deafult
2. Aggiungere il codice nella sezione dichiarazioni
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 Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
(le dichiarazioni qui di seguito devono essere su di una unica riga)
Private Declare Function SetFileTimeWrite Lib "kernel32" Alias
"SetFileTime" (ByVal hFile As Long, ByVal MullP As Long,
ByVal NullP2 As Long, lpLastWriteTime As FILETIME) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32"
(lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA"
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal
dwShareMode As Long, ByVal lpSecurityAttributes As Long, 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
3. inserire un command button.
Command1 è il nome di default.
4. aggiungere il codice:
Private Sub Command1_Click()
Dim Year As Integer, Month As Integer
Dim Day As Integer, Hour As Integer
Dim Minute As Integer, Second As Integer
Dim TimeStamp As Variant
Dim Filename As String
Dim X As Integer
Year = 1996
Month = 1
Day = 1
Hour = 1
Minute = 0
Second = 0
TimeStamp = DateSerial(Year, Month, Day) + TimeSerial(Hour, Minute, Second)
Filename = "c:\autoexec.bat"
X = ModifyFileStamp(Filename, TimeStamp)
MsgBox "La data e l'ora del file sono stati modificati"
End Sub
5. Create una funzione di nome
ModifyFileStamp:
Function ModifyFileStamp(Filename As String, TimeStamp As Variant) As Integer
Dim X As Long
Dim Handle As Long
Dim System_Time As SYSTEMTIME
Dim File_Time As FILETIME
Dim Local_Time As FILETIME
System_Time.wYear = Year(TimeStamp)
System_Time.wMonth = Month(TimeStamp)
System_Time.wDay = Day(TimeStamp)
System_Time.wDayOfWeek = WeekDay(TimeStamp) - 1
System_Time.wHour = Hour(TimeStamp)
System_Time.wSecond = Second(TimeStamp)
System_Time.wMilliseconds = 0
'convert the system time to a file time
X = SystemTimeToFileTime(System_Time, Local_Time)
'convert local file time to file time based on UTC
X = LocalFileTimeToFileTime(Local_Time, File_Time)
'open the file so we can get a file handle to the file
Handle = CreateFile(Filename, GENERIC_WRITE, FILE_SHARE_READ Or
FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
'now change the file time and date stamp
X = SetFileTimeWrite(Handle, ByVal 0&, ByVal 0&, File_Time)
CloseHandle Handle
End Function
6. Lanciare l'esempio premendo F5. La data
e l'ora del file AUTOEXEC.BAT sarà modificata.