1

Тема: AHK: автообновление gui

Добрый день. Имеется ahk, которая ретранслирует время с сайта Time100 через gui. Обновление времени должно происходить каждую секунду, смог реализовать только через цикл, в начале которого gui открывается, а в конце закрывается. Возможны ли какие-то варианты, чтобы gui обновлялся без постоянного закрытия и открытия?
Код:



GetTimeFromTime100ru(localTimeOffset := 0, formatString := "") {
   static url := "https://time100.ru/api.php"
   unixTime := GetResponseText(url,,,, error)
   if error
      throw error
   Return UnixTimeToLocal(unixTime, localTimeOffset, formatString)
}

GetResponseText(url, method := "GET", HeadersArray := "", body := "", ByRef error := "") {
   Whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
   Whr.Open(method, url, true)
   for name, value in HeadersArray
      Whr.SetRequestHeader(name, value)
   Whr.Send(body)
   Whr.WaitForResponse()
   status := Whr.status
   if (status != 200)
      error := "HttpRequest error, status: " . status
   Arr := Whr.responseBody
   pData := NumGet(ComObjValue(arr) + 8 + A_PtrSize)
   length := arr.MaxIndex() + 1
   Return StrGet(pData, length, "UTF-8")
}

UnixTimeToLocal(unixTime, diff, formatStr := "") {
   time := "19700101"
   time += unixTime, s
   time += diff, h
   if formatStr
      FormatTime, time, % time, % formatStr
   Return time
}
Loop
{
DllCall("ShowCursor", UInt, 0)
CustomColor2 = EEAA99

Gui +LastFound +AlwaysOnTop -Caption +ToolWindow +Disabled
GuiControl, Disable, Tab
Gui, Color, black

Gui, Font, s7

Gui, Font, cWhite

Gui, Font, w4300

GUI, ADD, TEXT,,      Time100
GUI, ADD, TEXT,,      % GetTimeFromTime100ru(3, "HH:mm:ss")

WinSet, TransColor, %CustomColor2% 200
Winset, ExStyle, +0x20
Gui, Show, NoActivate x5 y10, My Window
Sleep, 100
Gui Destroy

}
!2::
reload

2

Re: AHK: автообновление gui

'GuiControl' для этого есть.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: автообновление gui

CustomColor2 = EEAA99

Gui +LastFound +AlwaysOnTop -Caption +ToolWindow
Gui, Color, 0
Gui, Font, s7 w4300
Gui, Add, Text, cWhite, Время:
Gui, Add, Text, cWhite vTT x5 y24, Загрузка
Gui, Show, x5 y10 NA

WinSet, TransColor, %CustomColor2% 200
Winset, ExStyle, +0x20
SetTimer, GetTime, 1000
Return


UGet(U){
 E := ComObjCreate("WinHTTP.WinHTTPRequest.5.1"), E.Open("GET",u), E.Send(), E.WaitForResponse(), R:=E.ResponseText, E=
 Return R
}

GetTime(){
 Static Time := UGet("https://time100.ru/api.php")
 GuiControl,, TT, % UnixTimeToLocal(Time, -5, "hh:mm:ss")
 Time++
}

UnixTimeToLocal(UnixTime, Diff := 0, FormatStr := ""){
 Time := "19700101"
 Time += UnixTime, s
 Time += Diff, h
 If FormatStr
  FormatTime, Time, % Time, % FormatStr
 Return Time
}

Мой вариант загружает с сайта один раз, обновляет время без цикла. Лишнее удалил.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

4

Re: AHK: автообновление gui

__Михаил__ , благодарю, снова меня выручаете.

5

Re: AHK: автообновление gui

Тут правда в строке 'UnixTimeToLocal(Time, -5, "hh:mm:ss")' необходимо подставить своё значение часового смещения вместо '-5'.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101