Hier ein paar Codes:
Anzeige ala Windows:
Code: Alles auswählen
;PB 4.20 ,XP, kein Unicode
If OpenWindow(0, 0, 0, 400, 300, "Zeitangaben für Dateien", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
TextGadget(0, 10, 10, 400, 20, "Datei auswählen :", #PB_Text_Center)
ExplorerTreeGadget(1, 10, 30, 380, 260, "*.*", #PB_Explorer_NoDriveRequester)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
End
EndIf
Until EventType() = #PB_EventType_LeftDoubleClick And GetGadgetState(1) = #PB_Explorer_File
File$ = GetGadgetText(1)
hFile = ReadFile(0, File$)
If hFile
Create.FILETIME
LastAccess.FILETIME
LastWrite.FILETIME
LocTime.SYSTEMTIME
SysTime.SYSTEMTIME
GetFileTime_(hFile, Create, LastAccess, LastWrite) ;die 3 Zeiten auslesen
FileTimeToLocalFileTime_(Create, LocTime) ;erstellt am (hier GMT=UTC-Zeit)
FileTimeToSystemTime_(LocTime, SysTime) ;in lokale Zeit umrechnen
CTime$ = "Erstellt am "+Str(SysTime\wDay)+"."+RSet(Str(SysTime\wMonth),2,"0")+"."+Str(SysTime\wYear)
CTime$ + " um "+Str(SysTime\wHour)+":"+RSet(Str(SysTime\wMinute),2,"0")+":"+RSet(Str(SysTime\wSecond),2,"0")+#LFCR$
FileTimeToLocalFileTime_(LastWrite, LocTime) ;geändert am (hier GMT=UTC-Zeit)
FileTimeToSystemTime_(LocTime, SysTime) ;in lokale Zeit umrechnen
GTime$ = "Geändert am "+Str(SysTime\wDay)+"."+RSet(Str(SysTime\wMonth),2,"0")+"."+Str(SysTime\wYear)
GTime$ + " um "+Str(SysTime\wHour)+":"+RSet(Str(SysTime\wMinute),2,"0")+":"+RSet(Str(SysTime\wSecond),2,"0")+#LFCR$
FileTimeToLocalFileTime_(LastAccess, LocTime) ;letzter Zugriff am (hier GMT=UTC-Zeit)
FileTimeToSystemTime_(LocTime, SysTime) ;in lokale Zeit umrechnen
LTime$ = "Letzter Zugriff am "+Str(SysTime\wDay)+"."+RSet(Str(SysTime\wMonth),2,"0")+"."+Str(SysTime\wYear)
LTime$ + " um "+Str(SysTime\wHour)+":"+RSet(Str(SysTime\wMinute),2,"0")+":"+RSet(Str(SysTime\wSecond),2,"0")
MessageRequester("Zeitangaben für " + File$, CTime$ + GTime$ + LTime$)
Else
MessageRequester("Fehler !", File$ + " will nicht !")
CloseFile(0)
EndIf
EndIf
Den Kompilierzeitpunkt von Exe-Dateien im PE-Format (wie sie z.B. PB erstellt) kann man so ermitteln:
Code: Alles auswählen
;PB 4.20 ,XP, kein Unicode
If OpenWindow(0, 0, 0, 400, 300, "Kompilierzeitpunkt von Exe - Dateien im PE - File - Format", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
TextGadget(0, 10, 10, 400, 20, "Exe - Datei auswählen :", #PB_Text_Center)
ExplorerTreeGadget(1, 10, 30, 380, 260, "*.exe", #PB_Explorer_NoDriveRequester)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
End
EndIf
Until EventType() = #PB_EventType_LeftDoubleClick And GetGadgetState(1) = #PB_Explorer_File
File$ = GetGadgetText(1)
If ReadFile(0, File$)
FileSeek(0, $3C) ;Zeiger auf (eventuelle) PE-Kennung
PEADR = ReadLong(0)
FileSeek(0, PEADR) ;PE-Kennung
If ReadLong(0) = $00004550 ;"PE "
FileSeek(0, PEADR + 8) ;Kompilierzeitpunkt
KompDatum = ReadLong(0)
KompDatum$ = FormatDate("Jahr=%yyyy, Monat=%mm, Tag=%dd, Stunde=%hh, Minute=%ii, Sekunde=%ss", KompDatum)
MessageRequester("Kompilierzeitpunkt von " + File$, KompDatum$)
Else
MessageRequester("Fehler !", File$ + " ist keine Datei im PE-File-Format !")
EndIf
CloseFile(0)
EndIf
EndIf
Hier eine Zeitzonen-Auswertung:
Code: Alles auswählen
;PB 4.20 ,XP, kein Unicode
Global D$
Global W$
TZI.TIME_ZONE_INFORMATION
Procedure Wochentag(D)
Select D
Case 0
D$ = "Sonntag"
Case 1
D$ = "Montag"
Case 2
D$ = "Dienstag"
Case 3
D$ = "Mittwoch"
Case 4
D$ = "Donnerstag"
Case 5
D$ = "Freitag"
Case 6
D$ = "Samstag"
EndSelect
EndProcedure
Procedure Woche(W)
Select W
Case 1 To 4
W$ = " am " + D$ + " der " + Str(W) + ". Woche des Monats"
Case 5
W$ = " am " + D$ + " der letzten Woche des Monats"
EndSelect
EndProcedure
TZIR = GetTimeZoneInformation_(TZI)
Select TZIR
Case #TIME_ZONE_ID_UNKNOWN ;= 0
M$ = "Unbekannt"
End
Case #TIME_ZONE_ID_STANDARD ;= 1
M$ = PeekS(@TZI\StandardName, -1, #PB_Unicode) + #LFCR$
Case #TIME_ZONE_ID_DAYLIGHT ;= 2
M$ = PeekS(@TZI\DaylightName, -1, #PB_Unicode) + #LFCR$
Case #TIME_ZONE_ID_INVALID ;= -1
M$ = "Ungültig"
End
EndSelect
B$ = "Standard Unterschied zu UTC : " + Str(TZI\Bias) + " Minuten" + #LFCR$
SB$ = "Zusätzliche Abweichung : " + Str(TZI\StandardBias) + " Minuten" + #LFCR$
DL$ = "Sommerzeit-Unterschied : " + Str(TZI\DaylightBias) + " Minuten" + #LFCR$
S$ = "Umstellung auf Sommerzeit erfolgt im " + Str(PeekW(TZI\DaylightDate+2)) + ". Monat" ;oder Auswertung
N$ = "Umstellung auf Normalzeit erfolgt im " + Str(PeekW(TZI\StandardDate+2)) + ". Monat"
;Sommerzeit
D = PeekW(TZI\DaylightDate + 4) ;Wochentag der Umstellung
Wochentag(D)
W = PeekW(TZI\DaylightDate + 6) ;Woche des Monats
Woche(W)
S$ + W$ + " um " + Str(PeekW(TZI\DaylightDate + 8)) + " Uhr" + #LFCR$
;Normalzeit
D = PeekW(TZI\StandardDate + 4) ;Wochentag der Umstellung
Wochentag(D)
W = PeekW(TZI\StandardDate + 6) ;Woche des Monats
Woche(W)
N$ + W$ + " um " + Str(PeekW(TZI\StandardDate + 8)) + " Uhr"
MessageRequester("Zeitzone - Auswertung", M$ + B$ + SB$ + DL$ + S$ + N$)
Gruß
Helle