Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0046: Die Zeiteinstellungen eines Rechners im Netzwerk auslesen

 von 

Beschreibung

Mit diesem Beispiel lässt sich unter Verwendung der Windows-API-Funktion NetRemoteTOD die Zeiteinstellung eines anderen Rechners auslesen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Framework-Version(en):

.NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5

.NET-Version(en):

Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008

Download:

Download des Beispielprojektes [1,96 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2002/2003
' Option Strict:    Aus
' Option Explicit:  An
'
' Referenzen: 
'  - System
'  - System.Data
'  - System.XML
'
' Imports: 
'  - Microsoft.VisualBasic
'  - System
'  - System.Collections
'  - System.Data
'  - System.Diagnostics
'

' ##############################################################################
' ################################ modMain.vb ##################################
' ##############################################################################
Imports System.Runtime.InteropServices

Module modMain
    ' Definition der benötigten API-Funktionen
    <DllImport("netapi32.dll", CharSet:=CharSet.Unicode)> _
    Private Function NetRemoteTOD(ByVal UncServerName As String, _
        ByRef BufferPtr As System.IntPtr) As Int32
    End Function

    <DllImport("netapi32.dll")> _
    Private Function NetApiBufferFree(ByRef BufferPtr As System.IntPtr) As Int32
    End Function

    ' Stuktur für die Aufnahmen der Daten aus dem Aufruf der API-Funktion
    Public Structure struc_TOD
        Public tod_elapsedt As UInt32
        Public tod_msecs As UInt32
        Public tod_hours As UInt32
        Public tod_mins As UInt32
        Public tod_secs As UInt32
        Public tod_hunds As UInt32
        Public tod_timezone As Integer
        Public tod_tinterval As UInt32
        Public tod_day As UInt32
        Public tod_month As UInt32
        Public tod_year As UInt32
        Public tod_weekday As UInt32

        Public Function Date_Time() As Date
            Dim s As String
            Dim t As Date
            s = tod_day.ToString + "." _
                + tod_month.ToString + "." _
                + tod_year.ToString + " " _
                + tod_hours.ToString + ":" _
                + tod_mins.ToString + ":" _
                + tod_secs.ToString

            t = s
            Date_Time = t.AddMinutes(-tod_timezone)
        End Function
    End Structure

    ' Variable für die Daten
    Public tod As struc_TOD

    Sub Main()
        ' Pointer auf die Struktur der Werte:
        Dim ptodi As System.IntPtr

        ' Netzwerkadresse
        Dim NetAdr As String = "172.16.250.94"

        Try
            ' API-Call
            If (NetRemoteTOD(NetAdr, ptodi) <> 0) Then
                Console.WriteLine( _
                    "Ein Fehler ist beim Abfragen der Zeit aufgetreten!")
                Return
            End If

            ' Werte aus dem Speicher (Buffer) holen
            tod = Marshal.PtrToStructure(ptodi, GetType(struc_TOD))

            ' Buffer wieder freigeben
            NetApiBufferFree(ptodi)

            ' ... alles ausgeben
            Console.WriteLine("address  : [" + NetAdr + "]")
            Console.WriteLine("")
            Console.WriteLine("elapsedt : " + tod.tod_elapsedt.ToString)
            Console.WriteLine("msecs    : " + tod.tod_msecs.ToString)
            Console.WriteLine("hours    : " + tod.tod_hours.ToString)
            Console.WriteLine("mins     : " + tod.tod_mins.ToString)
            Console.WriteLine("secs     : " + tod.tod_secs.ToString)
            Console.WriteLine("hunds    : " + tod.tod_hunds.ToString)
            Console.WriteLine("timezone : " + tod.tod_timezone.ToString)
            Console.WriteLine("tinterval: " + tod.tod_tinterval.ToString)
            Console.WriteLine("day      : " + tod.tod_day.ToString)
            Console.WriteLine("month    : " + tod.tod_month.ToString)
            Console.WriteLine("year     : " + tod.tod_year.ToString)
            Console.WriteLine("weekday  : " + tod.tod_weekday.ToString)
            Console.WriteLine("Date     : " + tod.Date_Time.ToLongDateString)
            Console.WriteLine("Time     : " + tod.Date_Time.ToLongTimeString)
        Catch ex As Exception
            Console.WriteLine(ex.ToString)
        End Try
        Console.ReadLine()
    End Sub
End Module

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.