Mensaje enviado por Sergio Daniel Jaime Peña <serjaime78@hotmail.com> el 28/12/2002
Buenas Tardes espero que te sea de ayuda:
Extrae la fecha y la hora de una máquina local o remota
A través de este código conoceremos la fecha y la hora de nuestra máquina local o de cualquier máquina de nuestra red de una forma remota.
Option Explicit
'Estructuras API
Type TIME_OF_DAY_INFO
tod_elapsed 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
'LLamadas NETAPI
Public Declare Function NetRemoteTOD Lib "netapi32.dll" (yServer As Any, pBuffer As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32.dll" (ByVal pBuffer As Long) As Long
'LLamadas API al Kernel
Private Declare Sub CopyMem Lib "kernel32.dll" Alias "RtlMoveMemory" (pTo As Any, uFrom As Any, ByVal lSize As Long)
'Devuelve la fecha y la hora de una máquina específica de la red.
Public Function GetRemoteTime(ServerName As String) As Date
Dim lpBuffer As Long
Dim t_struct As TIME_OF_DAY_INFO
Dim ret As Long
Dim bServer() As Byte
If Trim(ServerName) = "" Then
'Máquina Local
ret = NetRemoteTOD(vbNullString, lpBuffer)
Else
If InStr(ServerName, "\\") = 1 Then
bServer = ServerName & vbNullChar
Else
bServer = "\\" & ServerName & vbNullChar
End If
ret = NetRemoteTOD(bServer(0), lpBuffer)
End If
CopyMem t_struct, ByVal lpBuffer, Len(t_struct)
If lpBuffer Then
Call NetApiBufferFree(lpBuffer)
End If
GetRemoteTime = DateSerial(t_struct.tod_year, t_struct.tod_month, _
t_struct.tod_day) + TimeSerial(t_struct.tod_hours, t_struct.tod_mins - _
t_struct.tod_timezone, t_struct.tod_secs)
End Function
'Coloca dos botones en el formulario
'Extrae la fecha y la hora de la máquina Local
Private Sub Command1_Click()
MsgBox GetRemoteTime("")
End Sub
'Extrae la fecha y la hora de una máquina remota.
Private Sub Command2_Click()
MsgBox GetRemoteTime("\\MYWORKSTATION")
End Sub
Salu2 Jaime
Sergio Daniel Jaime Peña
Algeciras (Cádiz - España)
serjaime@telefonica.net
>From: "Adalberto"
>Reply-To: visualbasic-esp@yahoogroups.com
>To:
>Subject: Re: (VB-ESP) Hora del Servidor
>Date: Sat, 28 Dec 2002 10:15:08 +0100
>
>MessageBueno, ante todo, gracias a los que contestaron, pero como sigo sin hacer funcionar la funcion GetDate(), paso a explicar lo que pretendo hacer con ella:
>
>Estoy realizando una aplicacion que reside en una maquina que hara la funcion de servidor, tanto para el programa en VB como para la base de datos, y en ella pretendo:
>
>-Comparar un campo fecha de la base de datos con la fecha actual del servidor, evitando asi la picardia de que cambiando la hora de la maquina cliente, el resultado no sea el esperado
>
>-"Ofrecer" al usuario en un TextBox.Txt la fecha del servidor y la hora del mismo para que no tenga que escribirla, y si la valida (si es correcta, o si modifica esa hora ofrecida) este TextBox.Txt sera guardado en un campo de la base de datos.
>
>-Grabar directamente en la base de datos, aparte del dia y la hora en la que el operador de la aplicacion "dice" que ha ocurrido, el dia y la hora en que ocurre realmente (temas legales, parecido al funcionamiento de un libro de actas de reuniones)
>
>Como se puede observar, en unos casos son para ayudar (ahi me daria practicamente igual la hora del servidor, que la de la maquina), y en la mayoria, son para evitar la picardia del cambio del dia y hora en la maquina cliente.
>
>La aplicacion funciona en que: abre la base de datos, presenta en pantalla los datos, y cierra la base de datos, ante cualquier "movimiento" del puntero, vuelve a abrir la base, refresca los datos, y la vuelve a cerrar.
>
>Espero haberme explicado un poco mejor.
>
>Gracias de nuevo, y FAN (Feliz Año Nuevo)
>
>Adalberto