GetSystemTimeAsFileTime
Ermittelt die aktuelle Zeit im Format der FILETIME-Struktur.
Deklarationen
<VB> Private Declare Sub GetSystemTimeAsFileTime Lib "kernel32.dll" ( _
ByRef lpSystemTimeAsFileTime As FILETIME)
' Alternative Deklaration zur Verwendung mit Variants vom Typ Decimal Private Declare Sub GetSystemTimeAsFileTime Lib "kernel32.dll" ( _
ByRef lpSystemTimeAsFileTime As Any)
</VB>
Parameter
lpSystemTimeAsFileTime Variable vom Typ FILETIME, welche die Zahl der vergangenden Zehntel-Mikrosekunden beinhaltet, die seit dem 01.01.1601 vergangen sind
Beispiel
<vb> Private Type FILETIME
dwLowDateTime As Long dwHighDateTime As Long
End Type
Private Declare Sub GetSystemTimeAsFileTime Lib "kernel32.dll" ( _
ByRef lpSystemTimeAsFileTime As FILETIME)
Private Declare Sub CopyMemory Lib "kernel32.dll" _
Alias "RtlMoveMemory" ( _ ByRef Dest As Any, _ ByRef Source As Any, _ ByVal cbCopy As Long)
Private Sub Command1_Click()
Dim FTime As FILETIME Dim V As Variant Dim C As Double Dim Days As Double Dim Hours As Long Dim Minutes As Long Dim Seconds As Long Dim Frac As Double Dim CurDate As Date V = CDec(0) ' Variant vorbereiten Call GetSystemTimeAsFileTime(FTime) CopyMemory ByVal (VarPtr(V) + 8), FTime, 8 ' Um mit einem 64-Bit-Integer rechnen ' zu können wird dieser in einen Variant ' vom Typ Decimal übertragen. C = 24# * 60 * 60 * 10000000 ' Anzahl der Zehntel-Microsekunden pro Tag Days = Int(V / C) V = V - Days * C CurDate = DateAdd("d", Days, CVDate("01.01.1601"))
C = 60# * 60 * 10000000 Hours = Int(V / C) V = V - Hours * C C = 60# * 10000000 Minutes = Int(V / C) V = V - Minutes * C C = 10000000 Seconds = Int(V / C) Frac = V - Seconds * C ' Rest in Einheiten von 100ns Frac = Frac / 10 ' Rest in µs Frac = Frac / 1000 ' Rest in ms Debug.Print CurDate & " " & TimeSerial(Hours, Minutes, Seconds) & " and " & Frac & " ms"
End Sub </vb>
Beispiel für Anwendung mit Variant
<vb> Private Declare Sub GetSystemTimeAsFileTime Lib "kernel32.dll" ( _
ByRef lpSystemTimeAsFileTime As Any)
Private Sub Command1_Click()
Dim FTime As FILETIME Dim V As Variant V = CDec(0) ' Variant vorbereiten Call GetSystemTimeAsFileTime(ByVal (VarPtr(V) + 8)) Debug.Print V ' V enthält jetzt den Wert des 64-Bit-Integers
End Sub </vb>
Hinweise
Unter W98 beschränkt sich die Genauigkeit der Zeitangabe auf Millisekunden. Unter XP ist die Zeitauflsöung 1µs.
Betriebssystem:
Die API-Funktion GetSystemTimeAsFileTime ist unter folgenden Betriebssystemen funktionsfähig:
- Windows 95 und später.
- Windows NT 3.1 und später