1

Тема: AHK: Обновляющийся текст в окне GUI

Подскажите, как наладить меняющийся по таймеру текст?

#SingleInstance Force
DetectHiddenWindows, on

  SetTimer, Timer, 3000
  Return

Timer:
  SysGet, Workspace, MonitorWorkArea 
  Gui, default 
  Gui, -Caption +ToolWindow +LastFound +AlwaysOnTop
  Gui, Color, 00833F
  Gui, Font, s7 bold cFFFFFF
  Gui, Add, Text,w74 Center vNow gNowEvent, %A_Now%

  Gui, Show, Hide 
  GUI_ID := WinExist() 
  WinGetPos, GUIX, GUIY, GUIWidth, GUIHeight, ahk_id %GUI_ID% 
  NewX := WorkSpaceRight-GUIWidth-26
  NewY := WorkspaceBottom-GUIHeight-0 
  Gui, Show, Hide x%NewX% y%NewY%

  DllCall("AnimateWindow","UInt",GUI_ID,"Int",500,"UInt","0x00040008")
  Return

NowEvent:
  ;GuiControl, , Now, % A_Now
  ;DllCall("AnimateWindow","UInt",GUI_ID,"Int",1000,"UInt","0x90000") ; Fade out
  Return

2

Re: AHK: Обновляющийся текст в окне GUI

DetectHiddenWindows, On
FormatTime, OutputVar,, ShortDate
SysGet, Workspace, MonitorWorkArea
Gui, +AlwaysOnTop -Caption +ToolWindow HwndhGUI
Gui, Color, 00833F
Gui, Font, s7 Bold cFFFF00
Gui, Add, Text, vNow w75 h26 Center
Gui, Show, Hide
WinGetPos, GUIX, GUIY, GUIWidth, GUIHeight, % "ahk_id"hGUI
NewX:=WorkSpaceRight-GUIWidth-26
NewY:=WorkspaceBottom-GUIHeight-0
Gui, Show, % "Hide x"NewX " y"NewY
SetTimer, Timer, 1000
Return

Timer:
   GuiControl,, Now, % A_Hour ":"A_Min "."A_Sec "`n"OutputVar
   DllCall("AnimateWindow", "UInt", hGUI
                          , "Int", 250
                          , "UInt", 0x80000)
   Return

3

Re: AHK: Обновляющийся текст в окне GUI

Grey, кажется, не совсем подходит — вместо переменной текущего времени, на практике предполагалось считывать меняющийся заголовок (проверкой по таймеру), с последующим выводом значения в GUI-окно.

4

Re: AHK: Обновляющийся текст в окне GUI

Извини, мне не понятно, что за "заголовок", какой "проверкой"?...

5 (изменено: DD, 2012-01-24 07:51:24)

Re: AHK: Обновляющийся текст в окне GUI

Нужно циклично получать в переменную меняющийся заголовок определённого конкретного окна (у меня для примера — "%A_Now%"), и выводить содержимое полученной переменной в GUI.

6 (изменено: Grey, 2012-01-24 18:12:45)

Re: AHK: Обновляющийся текст в окне GUI

DetectHiddenWindows, On
FormatTime, OutputVar,, ShortDate
SysGet, Workspace, MonitorWorkArea
Gui, +AlwaysOnTop -Caption +ToolWindow HwndhGUI
Gui, Color, 00833F
Gui, Font, s7 Bold cFFFF00
Gui, Add, Text, vNow w75 h26 Center
Gui, Show, Hide
Gui, 2: +AlwaysOnTop +ToolWindow -SysMenu HwndhGUI2
;Gui, 2: Add, Text, vNow2 w75 h26 Center
Gui, 2: Add, Text, w75 h26 Center
Gui, 2: Show, AutoSize, Same Title
WinGetPos, GUIX, GUIY, GUIWidth, GUIHeight, % "ahk_id"hGUI
NewX:=WorkSpaceRight-GUIWidth-26
NewY:=WorkspaceBottom-GUIHeight-0
Gui, Show, % "Hide x"NewX " y"NewY
SetTimer, Timer, 1000
DllCall("AnimateWindow", "UInt", hGUI
                       , "Int", 950
                       , "UInt", 0x80000)
Return
 
Timer:
   GuiControl,, Now, % A_Hour ":"A_Min "."A_Sec "`n"OutputVar

;   GuiControlGet, OutputVar2,, Now
;   GuiControlGet, OutputVar2,, Static1
;   ControlGetText, OutputVar2, % Now, % "ahk_id"hGUI
   ControlGetText, OutputVar2, Static1, % "ahk_id"hGUI

;   GuiControl, 2:, Now2, % OutputVar2
;   GuiControl, 2:, Static1, % OutputVar2
;   ControlSetText, % Now2, % OutputVar2, % "ahk_id"hGUI2
   ControlSetText, Static1, % OutputVar2, % "ahk_id"hGUI2
   Return

7

Re: AHK: Обновляющийся текст в окне GUI

Grey, а осуществима ли такая последовательность: сначала обращение к подпрограмме по таймеру, — затем получение-вывод текста (без создания дополнительного подтаймера)?
И спасибо за долготерпение .

8

Re: AHK: Обновляющийся текст в окне GUI

...
Timer:
   GuiControl,, Now, % A_Hour ":"A_Min "."A_Sec "`n"OutputVar

;обращение/получение
;   GuiControlGet, OutputVar2,, Now
;   GuiControlGet, OutputVar2,, Static1
;   ControlGetText, OutputVar2, % Now, % "ahk_id"hGUI
   ControlGetText, OutputVar2, Static1, % "ahk_id"hGUI

;вывод
;   GuiControl, 2:, Now2, % OutputVar2
;   GuiControl, 2:, Static1, % OutputVar2
;   ControlSetText, % Now2, % OutputVar2, % "ahk_id"hGUI2
   ControlSetText, Static1, % OutputVar2, % "ahk_id"hGUI2
   Return

9

Re: AHK: Обновляющийся текст в окне GUI

Если утомил не сильно, Grey, — возможно будет устранить возникающую ошибку из первого поста, сохранив последовательность таймеров-обращений и без необходимости создания нового подтаймера (в идеале — оставив стартовый таймер и переменную в строке

Gui, Add, Text,w74 Center vNow gNowEvent, %A_Now%

без изменений)?
Дело в том, что специфика предстоящего использования фрагмента не допустит других комбинаций (двух таймеров и тд).

10

Re: AHK: Обновляющийся текст в окне GUI

А теперь построй-ка мне избу! (c)

11

Re: AHK: Обновляющийся текст в окне GUI

Нет, ypppu,  — если попытаетесь вникнуть в суть моей просьбы, увидите, что с самого начала веду речь об одном и том же.
Я не наглею (хочется в это верить ).

12

Re: AHK: Обновляющийся текст в окне GUI

Впрочем, — пропустим это, не важно...

13 (изменено: KusochekDobra, 2016-05-16 01:52:26)

Re: AHK: Обновляющийся текст в окне GUI

Здравствуйте. Помогите пожалуйста.


; блок переменных
...
; конец блока
Gui, ; настройки и прочие элементы первого окна

Gui, 2: ; настройки и прочие элементы второго окна

; подпрограмма с телом сценария
sub_main:
...
return

В первом окне управляющие элементы, задающие настройки и общий характер поведения сценария, а во втором своего рода лог, в котором отображается содержимое нужных переменных из "sub_main". Вероятно, это должна быть отформатированная символом "`n" строка, предварительно собранная из нужных данных, но что-то как не пытался применить материал выше - не получается. Гугль тоже не помог. Подскажите пожалуйста реализацию.

Несколько позже:

Разобрался через:


ControlSetText, Static1, % OutputVar2, % "ahk_id"hGUI2

Если я правильно понял, "Static1" - это первый контейнер GUI указанного в его хендле последним параметром. Если не затруднит, поделитесь пожалуйста ссылкой, где об этом подробно написано.