Bom dia
Eu faço assim, talvez ajude:
Function fAcertarDtHr(lMostraOk)
Local oWeb, cWeb, cProcura, cExtrai, cHora, cData, lAjusta:=.f.
Default lMostraOk:=.t.
If !VerificaNet()
If lMostraOk
fMsgStop("Computador não está conectado na internet.", "Sem Acesso à Internet")
Endif
Return .f.
Endif
MsgAguarde("Verificando data/hora pela internet.", "Aguarde...")
SysRefresh()
CursorWait()
oWeb := WebConnect():New()
cWeb := oWeb:Open( "http://www.horacerta.com.br/index.php?city=sao_paulo" )
cProcura:= '<input name="mostrador" type="text" size="25" value="'
cExtrai := Subs(cWeb, At(cProcura,cWeb)+53,24)
cData := Alltrim(Left(alltrim(cExtrai),10))
cHora := Alltrim(StrZero(If(Right(cExtrai,2)=="PM" .and. Val(subs(cExtrai,14,2))<=11, 12, 0)+Val(subs(cExtrai,14,2)),2)+":"+subs(cExtrai,17,5))
If Val(GetPvProfString("Diversos", "Ajuste da Hora", "", CurDrive()+":\"+CurDir()+"\"+cNomeTerm+".ini"))==0
// Não alterar a hora
Elseif Val(GetPvProfString("Diversos", "Ajuste da Hora", "", CurDrive()+":\"+CurDir()+"\"+cNomeTerm+".ini"))==1
cHora := TsTring(Secs(cHora)-3600)
Else
cHora := TsTring(Secs(cHora)+3600)
Endif
MsgFechaAguarde()
If Ctod(cData)<>Date() .and. Val(cData)<>0 .and. Subs(cHora,1,5)<>Subs(Time(),1,5) .and. Val(cHora)<>0
If MsgYesNo("Data e hora da Internet:"+CRLF+;
cData+" - "+cHora+CRLF+CRLF+;
"Data e hora do computador:"+CRLF+;
Dtoc(Date())+" - "+Time()+CRLF+CRLF+;
"Deseja ajustar a data e hora?", "Data e hora do computador parecem desatualizadas.")
lAjusta:=.t.
Endif
Elseif Ctod(cData)==Date() .and. Val(cData)<>0 .and. Subs(cHora,1,5)<>Subs(Time(),1,5) .and. Val(cHora)<>0
If MsgYesNo("Hora da Internet:"+CRLF+;
cHora+CRLF+CRLF+;
"Hora do computador:"+CRLF+;
Time()+CRLF+CRLF+;
"Deseja ajustar a hora?", "A hora do computador está desatualizada")
lAjusta:=.t.
Endif
Elseif Ctod(cData)<>Date() .and. Val(cData)<>0 .and. Subs(cHora,1,5)==Subs(Time(),1,5) .and. Val(cHora)<>0
If MsgYesNo("Data da Internet:"+CRLF+;
cData+CRLF+CRLF+;
"Data do computador:"+CRLF+;
Dtoc(Date())+CRLF+CRLF+;
"Deseja ajustar a data?", "A data do computador está desatualizada")
lAjusta:=.t.
Endif
Else
If lMostraOk
MsgInfo("A data/hora do seu computador conferem com as informações da internet."+CRLF+CRLF+;
"Data: "+cData+" - Hora: "+cHora, "Informações da Internet")
Endif
Endif
If lAjusta
MsgRun( "Ajustando data e hora.", "Aguarde...", { || fAjustaDataHora(cData, cHora) } )
MsgInfo("Ajuste realizado com sucesso.", "Ajuste")
Endif
Return Nil
Static Function fAjustaDataHora(cData, cHora)
MyRun( "date "+cData )
MyRun( "time "+cHora )
If Ctod(cData) <> date()
MyRun("timedate.cpl") //abre tela data e hora windows
Endif
Return .t.
Tem algumas funções próprias, mas comente e teste.
Herberson Gontijo