Maestro, mira este ejemplo por favor. Tengo la hora y fecha desde una pagina de internet, después me gustaria de podrer actualizar la hora y fecha de windows en tiempo real, si el hora y fecha estean erroneas.
// Funcao Para Mostrar a Hora de Brasilia em Tempo Real na Tela.
#Include "FiveWin.ch"
STATIC oDlg, oTimer, oWnd
FUNCTION BRASILIA()
LOCAL oIco, aGet := ARRAY(5), cHoraBra := " "
DEFINE DIALOG oDlg TITLE "Hora de Brasilia" COLOR "W+/B"
@ 0.50, 09 SAY "Hora de Brasilia" SIZE 050, 10 OF oDlg ;
COLORS CLR_BLACK, CLR_WHITE CENTER
@ 2, 08 GET aGet[1] VAR cHoraBra PICTURE "99:99:99" OF oDlg CENTER
aGet[1]:lBtnTransparent := .t. // transparent button get aGet[1]
aGet[1]:Disable() // When( .F. )
aGet[1]:lBtnTransparent := .t. // transparent button get aGet[1]
aGet[1]:lAdjustBtn := .t. // Button Get Adjust Witdh aGet[1]
aGet[1]:lDisColors := .f. // Deactive disable color
aGet[1]:nClrTextDis := CLR_WHITE // Color text disable status
aGet[1]:nClrPaneDis := CLR_BLACK // Color Pane disable status
aGet[1]:lAdjustBtn := .t.
@ 3, 10 BUTTON "&Saida" SIZE 40, 12 DEFAULT ;
ACTION( oTimer:DeActivate(), oDlg:End() ) CANCEL UPDATE
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT( PEGA_TIMER_BRASIL( aGet, oWnd ) )
RETURN NIL
//-> ACIONA O TIMER DO RELOGIO DE BRASILIA NO DIALOGO
FUNCTION PEGA_TIMER_BRASIL( aGet, oWnd )
DEFINE TIMER oTimer INTERVAL 0 OF oDlg ;
ACTION HORABRASILIA( aGet, oWnd )
ACTIVATE TIMER oTimer
RETURN NIL
//-> HORA EXATA DE BRASILIA
FUNCTION HORABRASILIA( aGet, oWnd )
LOCAL oHttp, cHtml
LOCAL cHora
IF IsInternet() // Se tiver internet ativa
oHttp := CreateObject( "winhttp.winhttprequest.5.1" )
oHttp:Open( "GET", "http://24timezones.com/pt_horamundial/brasilia_hora_local.php" , .F. )
oHttp:Send()
cHtml:= oHttp:ResponseText()
cHtml:= left(alltrim(StrExtract(cHtml, '<span id="currentTime">', '</span>' )),8)
cHora := TRANSF( cHtml, "99:99:99" )
aGet[1]:VARPUT( cHora )
aGet[1]:Refresh()
ELSE
cHora := [SEM NET]
aGet[1]:VARPUT( cHora )
aGet[1]:Refresh()
ENDIF
RETURN NIL
STATIC FUNCTION StrExtract(cText,cAfter,cBefore)
LOCAL cRet := SUBSTR(cText,AT(cAfter,cText) + LEN(cAfter))
LOCAL n
IF (n := AT(cBefore,cRet)) > 0
cRet := LEFT(cRet,n - 1)
ENDIF
RETURN(cRet)
//-> Funcao para checar a Internet
FUNCTION IsInternet()
LOCAL cIp, cVret := .F.
WsaStartUp()
// conforme pessoal do forum, e para chamar duas vezes
cIp := GETHOSTBYNAME( "microsoft.com" )
cIp := GETHOSTBYNAME( "microsoft.com" )
WsaCleanUp()
// Seguranca caso o provedor da microsoft esteja fora do ar...
IF ( cIp <= "0.0.0.0" )
WsaStartUp()
cIp := GetHostByName( "google.com" )
cIp := GetHostByName( "google.com" )
WsaCleanUp()
ENDIF
RETURN( cIp<>"0.0.0.0" )
// FIM DO PROGRAMA
Gracias, saludos.