Rubrik: Dateisystem | 22.03.05 |
CompareFileTime-Funktion Diese Funktion vergleicht zwei FILETIME-Strukturen miteinander und gibt das Ergebnis zurück. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 9.502 |
Deklaration:
Declare Function CompareFileTime Lib "kernel32.dll" ( _ lpFileTime1 As FILETIME, _ lpFileTime2 As FILETIME) As Long
Beschreibung:
Diese Funktion vergleicht zwei FILETIME-Strukturen miteinander und gibt das Ergebniszurück.
Parameter:
lpFileTime1 | Erwartet die erste FILETIME-Struktur. |
lpFileTime2 | Erwartet die zweite FILETIME-Struktur. |
Rückgabewert:
Ist die erste der beiden FILETIME-Strukturen jünger, so wird der Wert "-1" zurückgegeben. Wenn beide Strukturen die selbe Zeit beinhalten so wird derWert "0" zurückgegeben. Wenn die erste Struktur älter ist als die zweite wird derWert "1" zurückgegeben.
Beispiel:
Private Declare Sub GetSystemTime Lib "kernel32.dll" (lpSystemTime As SYSTEMTIME) Private Declare Function LocalFileTimeToFileTime Lib "kernel32.dll" ( _ lpLocalFileTime As FILETIME, _ lpFileTime As FILETIME) As Long Private Declare Function SystemTimeToFileTime Lib "kernel32.dll" ( _ lpSystemTime As SYSTEMTIME, _ lpFileTime As FILETIME) As Long Private Declare Function CompareFileTime Lib "kernel32.dll" ( _ lpFileTime1 As FILETIME, _ lpFileTime2 As FILETIME) As Long Private Declare Function FileTimeToSystemTime Lib "kernel32.dll" ( _ lpFileTime As FILETIME, _ lpSystemTime As SYSTEMTIME) As Long Private Declare Function FileTimeToLocalFileTime Lib "kernel32.dll" ( _ lpFileTime As FILETIME, _ lpLocalFileTime As FILETIME) As Long 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
' Ermitteln ob Private Sub Command1_Click() Dim LocalTime As FILETIME, GMTTime As FILETIME, Retval As Long Dim STimeLocal As SYSTEMTIME, STimeGMT As SYSTEMTIME, TmpTime As FILETIME ' Systemzeit ermitteln (Ohne die Addition der Zeitzonen Informationen ' z.B. in Berlin +1 Std.) Call GetSystemTime(STimeLocal) ' Systemzeit in eine FILETIME-Struktur konvertieren Retval = SystemTimeToFileTime(STimeLocal, TmpTime) ' Addieren / subtrahieren der Zeitzonendifferenz zu unserer Systemzeit Retval = FileTimeToLocalFileTime(TmpTime, LocalTime) ' UTC / GMT-Zeitzonen-Format der Systemzeit erstellen Retval = LocalFileTimeToFileTime(LocalTime, GMTTime) ' Kopieren der FILETIME-Strukturen in SYSTEMTIME-Strukturen Call FileTimeToSystemTime(GMTTime, STimeGMT) Call FileTimeToSystemTime(LocalTime, STimeLocal) ' Zeiten vergleichen Retval = CompareFileTime(LocalTime, GMTTime) Select Case Retval Case -1 MsgBox "Die aktuelle Systemzeit ist früher als die GMT-Zeit" Case 0 MsgBox "Die Zeiten sind Identisch" Case 1 MsgBox "Die aktuelle Systemzeit ist später als die GMT-Zeit" End Select With STimeLocal Label1.Caption = .wHour & ":" & .wMinute & ":" & .wSecond & " (Lokal)" End With With STimeGMT Label1.Caption = Label1.Caption & vbCrLf & .wHour & ":" & _ .wMinute & ":" & .wSecond & " (GMT)" End With End Sub