vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen   |   VB-Versionen: VB4, VB5, VB623.12.02
Zeitabgleich im Netzwerk

Dieser Code zeigt, wie sich Datum und Uhrzeit eines Netzwerk-Rechners ermitteln lassen.

Autor:   Dieter OtterBewertung:  Views:  17.937 
www.tools4vb.deSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Nachfolgender Code zeigt, wie sich Datum und Uhrzeit eines Netzwerk-Rechners ermitteln lassen, um z.B. einen Zeitabgleich für den eigenen Rechner durchzuführen.

' Benötigte API-Deklarationen
Private Declare Function NetRemoteTOD Lib "netapi32.dll" ( _
  UncServerName As Any, _
  lpBuffer As Long) As Long
 
Private Declare Function NetApiBufferFree Lib "netapi32.dll" ( _
  ByVal lpBuffer As Long) As Long
 
Private Declare Sub CopyMemory Lib "kernel32" _
  Alias "RtlMoveMemory" ( _
  Destination As Any, _
  ByVal Source As Any, _
  ByVal Length As Long)
 
Private Type TIME_OF_DAY_INFO
  tod_elapsedt As Long
  tod_msecs As Long
  tod_hours As Long
  tod_mins As Long
  tod_secs As Long
  tod_hunds As Long
  tod_timezone As Long
  tod_tinterval As Long
  tod_day As Long
  tod_month As Long
  tod_year As Long
  tod_weekday As Long
End Type
' Zeit-Infos eines Rechners ermitteln
Public Function GetNetTime(ByVal sServer As String) As Date
  Dim nBuffer As Long
  Dim nResult As Long
  Dim uTIME As TIME_OF_DAY_INFO
  Dim bServer() As Byte
 
  If Trim$(sServer) = "" Then
    ' Eingestellte Zeit des eigenen Rechners ermitteln
    nResult = NetRemoteTOD(vbNullString, nBuffer)
  Else
    ' Name des Servers muss als Byte-Array
    ' übergeben werden!
    bServer = sServer & vbNullChar
    nResult = NetRemoteTOD(bServer(0), nBuffer)
  End If
 
  If nResult = 0 Then
    ' Ergebnis in TIME_OF_DAY_INFO Structur kopieren
    CopyMemory uTIME, nBuffer, Len(uTIME)
    NetApiBufferFree nBuffer
 
    With uTIME
      ' Jetzt nur noch das Datum "zusammenbauen" :-)
      GetNetTime = DateSerial(.tod_year, .tod_month, .tod_day) + _
        TimeSerial(.tod_hours, .tod_mins - .tod_timezone, .tod_secs)
    End With
  End If
End Function

Beispiel für den Aufruf:
Nachfolgendes Beispiel ermittelt Datum und Uhrzeit des eigenen Rechners:

Dim vDate As Date
vDate = GetNetTime("")
MsgBox vDate

Das zweite Beispiel ermittelt Datum und Uhrzeit eines Netzwerkrechners und setzt dann die aktuelle Systemzeit entsprechend den ermittelten Daten.

Dim vDate As Date
vDate = GetNetTime("\\Server")
If vDate <> "00:00:00" Then
  Date = vDate
  Time = vDate
End If



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.