Jump to content

Recommended Posts

Posted (edited)

please help me,

my script not working, i want gui run like local real time

#NoTrayIcon
#include <INet.au3>
#include <String.au3>
#include <array.au3>

Local $Refresh = 0 ; Set refresh OFF
Local $Timer = TimerInit()
Local $RefreshEvery = 1 ; seconds

;Global $nCheck
Global $link = BinaryToString (InetRead ("http://test.no-ip.info/time.asp"))
Global $timeserver = _StringBetween($link, 'id="timeserver">' , '</span>')
Global $realtime = $timeserver[0]

GuiCreate("Time My Server",200,50)
$htime = GuiCtrlCreateLabel("", 10, 10, 180, 20)
$btnStart = GUICtrlCreateButton("Start", 40, 30, 57, 17)
$btnStop = GUICtrlCreateButton("Stop", 110, 30, 57, 17)
GuiSetState()

While 1
    $nMsg = GUIGetMsg()
    Select
         Case $nMsg = $btnStart
                  $Refresh = 1 ; Set refresh ON
         Case $nMsg = $btnStop
                  $Refresh = 0 ; Set refresh OFF
   EndSelect

    If $Refresh And (TimerDiff($Timer) > $RefreshEvery*1000) Then
         time()
          $Timer = TimerInit()
    EndIf

WEnd

Func time()
    ;If @SEC <> $nCheck Then
        GUICtrlSetData($htime, "The current time is  " & $realtime)
        ;$nCheck = @SEC
    ;EndIf
 EndFunc

 

 

Edited by razor999
add url link
Posted

i have no vm and so i can't look what's wrong, your script don't returns a result for $link, so put 

ConsoleWrite('Ret: '&$link&@CRLF)

to your script and post the output from your console in thread.

 

But why not using a ntp server for getting the time.

Posted

I have this in my scripts box

#include <Date.au3>
#NoTrayIcon
;Variables
Dim $NTP_Server[4] = ['time.nist.gov','pool.ntp.org','ntp.amnic.net','ntp.stairweb.de'], $NTP_IP[4], $NTPIP[4]
;main program
$NTP_IP = call('check_internet_connectivity')
        If  $NTP_IP[0] <> '' Then
            $adata = call('NTP_Connect', $NTP_Server[0])
        ElseIf $NTP_IP[1] <> '' Then
            $adata = call('NTP_Connect', $NTP_Server[1])
        ElseIf $NTP_IP[2] <> '' Then
            $adata = call('NTP_Connect', $NTP_Server[2])
        ElseIf $NTP_IP[3] <> '' Then
            $adata = call('NTP_Connect', $NTP_Server[3])
            Else
        Exit
        EndIf
call('Set_Time', $adata)
Exit
;Function to check wich/if servers if you are available to avoid UDP blockage.
Func check_internet_connectivity()
    TCPStartup()
        For $i = 0 to 3
            $NTPIP[$i] = TCPNameToIP ( $NTP_Server[$i])
            Sleep(250)
        Next
    TCPShutdown ()
    Return $NTPIP
EndFunc
;Function to read time from ntp server.
Func NTP_Connect($NTP_Server)
    UDPStartup()
    Dim $socket = UDPOpen(TCPNameToIP($NTP_Server), 123)
    $status = UDPSend($socket, MakePacket("1b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))
    $data = ""
    While $data = ""
        $data = UDPRecv($socket, 100)
        Sleep(100)
    WEnd
    UDPCloseSocket($socket)
    UDPShutdown()
    Return $data
EndFunc
;Function to decript the time and apply to system
Func Set_Time($bdata)
    $unsignedHexValue = StringMid($bdata, 83, 8); Extract time from packet. Disregards the fractional second.
    $value = UnsignedHexToDec($unsignedHexValue)
    $TZinfo = _Date_Time_GetTimeZoneInformation()
    $UTC = _DateAdd("s", $value, "1900/01/01 00:00:00")
    If  $TZinfo[0] <> 2 Then ; 0 = Daylight Savings not used in current time zone / 1 = Standard Time
        $TZoffset = ($TZinfo[1]) * - 1
        Else ; 2 = Daylight Savings Time
        $TZoffset = ($TZinfo[1] + $TZinfo[7]) * - 1
    EndIf
            ;~ Extracts the data & time into vars
            ;~ Date format & offsets
            ;~ 2009/12/31 19:26:05
            ;~ 1234567890123456789  [1 is start of string]
    $m = StringMid($UTC, 6, 2)
    $d = StringMid($UTC, 9, 2)
    $y = StringMid($UTC, 1, 4)
    $h = StringMid($UTC, 12, 2)
    $mi = StringMid($UTC, 15, 2)
    $s = StringMid($UTC, 18, 2)
;~ Sets the new current time to the computer
    $tCurr = _Date_Time_EncodeSystemTime($m, $d, $y, $h, $mi, $s)
    _Date_Time_SetSystemTime(DllStructGetPtr($tCurr))
    MsgBox(0, "time", _DateAdd("n", $TZoffset, $UTC)) ; THIs is the time stamp we add to loged in / out
EndFunc
;Function to send packet to ntp server
Func MakePacket($d)
    Local $p = ""
    While $d
        $p &= Chr(Dec(StringLeft($d, 2)))
        $d = StringTrimLeft($d, 2)
    WEnd
    Return $p
EndFunc
;Function to decript UnsignedHexToDec
Func UnsignedHexToDec($n)
    $ones = StringRight($n, 1)
    $n = StringTrimRight($n, 1)
    Return Dec($n) * 16 + Dec($ones)
EndFunc

It's one I have found at the forum years ago, I got it from this thread (I think, it's longtime sins) https://www.autoitscript.com/forum/topic/43079-ntp-c-to-autoit-conversvion/#comment-861173

Maybe you can use that, or a part of it

 

Cheers
/Rex

Posted (edited)

There is also an example in the wiki that I posted about 4 years ago! It's using http://www.timeapi.org/

Oh, I see it supports JSON-P, well, well. Time to post some code to the JavaScript section >> 

 

Edited by guinness

UDF List:

  Reveal hidden contents

Updated: 22/04/2018

Posted

Here are also other solutions:

 

 

 

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...