vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  17.917 
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

Dieser Tipp wurde bereits 17.917 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel