Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
117
Assunto : Visual Basic
Titulo: Recuperar data e hora de um servidor remoto

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Já vi várias pessoas perguntando como recuperar data e hora de um servidor, afinal a aplicação precisava ter o relógio da máquina em que está rodando sincronizado com o da máquina do banco de dados.

Sincronia de hora é, sem dúvida, trabalho do administrador da rede. A sincronia é tipicamente feita através de scripts de login que são atribuidos aos usuários. Coloca-se no script de login (um arquivo .bat) a instrução NET TIME <SERVIDOR> /SYNC /YES

Desta forma, sempre que o usuário se logar o horário das máquinas será sincronizado. Se você tem problemas desse tipo com horário, reclame com o administrador de sua rede.

Mas, como muitos programadores VB querem realmente recuperar a data/hora do servidor remotamente, vai então uma chamada de API para fazer isso. Para testar basta inserir uma textbox e um botão em um form, incluir este código no módulo do form e, no clique do botão, chamar a função. A chamada da função pode ficar assim :

MsgBox BuscarDataHora(Text1.Text)

Eis o código :

Option Explicit
Private Declare Function NetRemoteTOD Lib "NETAPI32.DLL" (ByVal server As String, buffer As Any) As Long
Private Declare Function NetApiBufferFree Lib "NETAPI32.DLL" (ByVal buffer As Long) As Long
Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Type TIME_OF_DAY
t_elapsedt As Long
t_msecs As Long
t_hours As Long
t_mins As Long
t_secs As Long
t_hunds As Long
t_timezone As Long
t_tinterval As Long
t_day As Long
t_month As Long
t_year As Long
t_weekday As Long
End Type

'
' Função para retornar a Data/Hora de um computador na rede
' RETORNO:
' string no formato dd/mm/yyyy-hh:mm:ss
' PARAMETROS:
' sComputador: Nome de um computador da rede. Ex: \\SERVIDOR1
'
Private Function BuscarDataHora(sComputador As String) As String
Dim sRetorno As String
Dim todTime As TIME_OF_DAY
Dim ptrTime As Long
Dim lRetorno As Long
Dim sServidor As String
Dim dRemoto As Date
On Error GoTo ERRO
sRetorno = ""
Screen.MousePointer = vbHourglass
sServidor = StrConv(sComputador, vbUnicode)
lRetorno = NetRemoteTOD(sServidor, ptrTime)
If lRetorno = 0 Then
CopyMemory todTime, ByVal ptrTime, Len(todTime) 'COPIA O PONTEIRO RETORNADO PARA A ESTRUTURA TIME_OF_DAY
dRemoto = DateSerial(70, 1, 1) + (todTime.t_elapsedt / 60 / 60 / 24) 'CONVERTE O TEMPO DECORRIDO DESDE 1/Jan/70 PARA UMA DATA
dRemoto = dRemoto - (todTime.t_timezone / 60 / 24) 'AJUSTAR PARA DIFERENÇAS DO TimeZone
sRetorno = Format(dRemoto, "dd/mm/yyyy") & "-" & Format(dRemoto, "hh:mm:ss")
NetApiBufferFree (ptrTime) 'LIBERA O PONTEIRO DA MEMÓRIA
Else
'Erro 53: cannot find server
MsgBox "Não pode encontrar o servidor." & vbCrLf & vbCrLf & sServidor, vbExclamation, "Atenção"
End If
GoTo FIM
ERRO:
MsgBox Err.Number & vbCrLf & Err.Description, vbCritical, "Erro"
FIM:
Screen.MousePointer = vbDefault
BuscarDataHora = sRetorno
Exit Function
End Function

Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 10/14/2016 11:56:00 PM
nome: rkNiXvYBrN
email: jimos4581rzt@hotmail.com
comentário:
GJDXxV http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 10/14/2016 11:22:00 PM
nome: eJWjhaLPukYXQAHxC
email: jimos4581rzt@hotmail.com
comentário:
7NyVgw http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 8/8/2016 7:47:00 AM
nome: gAloxywTcLHjMnqVrh
email: jimos4581rt@hotmail.com
comentário:
zAmisa http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 6/30/2006 9:31:00 AM
nome: João Carlos
email: jcybernetico@gmail.com
comentário:
Este comando que você publicou não funciona
o Comando correto no DOS é

net time /set /yes \\servidor


data: 4/26/2005 3:04:00 PM
nome: DANIEL GOCKS
email: daniel.gocks@terra.com.br
comentário:
estou a procurar alguma coisa que me informe que o usuario alterou o horario do micro , ou que inpeça ele de altera-lo.
se tiver alguma dica

valeu

Daniel


 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br