Newsgroup: it.comp.lang.visual-basic
Titolo: help dataora del server

Ragazzi devo ottenere l'ora di sistema del server da un PC client.
Sono 2 giorni che ci provo ma niente, l'unico sistema era quello di fare una
net time da shell e poi leggere il risultato)
shell("net time \\" & MyServername & "/yes >pippo.txt")
poi leggo il file pippo.
A parte che il metodo non e' pulito, neanche funziona.
Di fatti se il fusorario del mio pc e' diverso da quello del server,
l'ora viene sfalsata esempio:
         Server                  client
fuso  greenweec              Roma (+1)
ora     10:00                    10:00
se faccio net time mi dice  che l'orologio del server fa le 11:00
devo assolutamente risolvere il problema.
Se qualcuno sa come fare lo ringrazio in anticipo.
ciao benny

 ha scritto nel messaggio
news:FGyG6.10910$q3.1...@news1.tin.it...

Usa il comando Time(Now), ti da l'ora!
Ciao
--
Timothy Redaelli
timothy....@email.it


ehm, a parte il fatto che la sintassi corretta di tale comando e', semplicemente,
Time
mi sembra che Benny volesse conoscere l' ora del server e non quella del client.
Quello che gli serve e' 
NetRemoteTOD
The NetRemoteTOD function returns the time of day information from a specified server.
Qui metto un esempio sull' uso di tale api:
Option Explicit
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
Private Declare Function NetRemoteTOD Lib "Netapi32.dll" ( _
                    ByRef yServer As Any, _
                    ByRef pBuffer 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" ( _
                    ByRef Destination As Any, _
                    ByRef Source As Any, _
                    ByVal Length As Long _
                    )
Public Function GetServerTime(ByVal strServerName As String) As Date
    Dim apiRet As Long              '// ritorno della chiamata all' api
    Dim tod As TIME_OF_DAY_INFO     '// data e ora cercate
    Dim lpBuffer As Long            '// puntatore al buffer da copiare nel record tod
    Dim arrServerName() As Byte     '// stringa Unicode da passare all' api
    '// copia la stringa in formato unicode in un array
    '// terminato da carattere nullo, per passarlo a NetRemoteTOD
    '// occorre fare cosi' perche' se no VB la converte in stringa ANSI
    '// nel passarla all' api
    arrServerName = strServerName & vbNullChar
    apiRet = NetRemoteTOD(arrServerName(0), lpBuffer)
    Erase arrServerName()
 
    If apiRet = 0 Then
 
        '// copia il buffer di cui l' api ci ha fornito il puntatore
        '// nella struttura tod per leggere i dati facilmente
        CopyMemory tod, ByVal lpBuffer, Len(tod)
 
        '// libera il buffer allocato dall' api
        NetApiBufferFree lpBuffer
 
        '// calcola la data e ora ottenute
        With tod
        GetServerTime = DateSerial(.tod_year, .tod_month, .tod_day) + _
                    TimeSerial(.tod_hours, (.tod_mins - .tod_timezone), .tod_secs)
        End With    '// tod
 
    Else
 
        '// si e' verificato un errore
        GetServerTime = 0
 
    End If
End Function    '// GetServerTime

 wrote in message
9cfcnn$d3mhn$1...@ID-56381.news.dfncis.de...
