1 (изменено: Вася Пупкин, 2014-12-04 12:34:55)

Тема: AHK: Запустить приложение по таймеру с индикатором в трее

Задача:
1. Скрипт должен запустить приложение (например: run notepad.exe).
2. Перед запуском приложения скрипт должен запустить таймер (см. картинку)
(например: Sleep, 60000) и по истечении этого времени запустить приложение (см. пункт 1).
3. Во время работы таймера в трее должен идти обратный отчет.
Например, в моём примере (см. картинку) программа должна запуститься через 46 сек.

Ребята, подскажите куда копать, что бы это реализовать.
Пойдет любое решение, главное что бы скрипт можно было сделать быстро.

2

Re: AHK: Запустить приложение по таймеру с индикатором в трее

Проще всего так:

GUI, -Caption
GUI, Show, w0 h0

А затем  изменять заголвок окна.
А если очень хочется в трее, копать на иностранных форумах по словам "Animated tray icon" и "GDIP tray icon":
Write 2 digit numbers to the system tray icon
Tray tip with custom icon?

3

Re: AHK: Запустить приложение по таймеру с индикатором в трее

Вот так у меня получилось отражать окно с таймером поверх панели задач, слева от языковой панели:

hTray := WinExist("ahk_class Shell_TrayWnd")
ControlGetPos, X,,,, CiceroUIWndFrame1
WinGetPos,, Y_Tray,, H_Tray

Gui, -Caption +ToolWindow +AlwaysOnTop +Owner
Gui, Margin, 0, 0
Gui, Color, Black
Gui, Font, s10
Gui, Add, Text, % "center x0 y4 cWhite w" H_Tray " h" H_Tray - 8, % sec := 10
Gui, Show, % "NA x" X-50 " y" Y_Tray + 2
StartTime := A_TickCount
SetTimer, Timer, 100
Return

Timer:
   Gui, +AlwaysOnTop
   Time := (A_TickCount - StartTime)//1000
   if (Time != PrevTime)
   {
      GuiControl,, Static1, % res := sec - Time
      PrevTime := Time
   }
   if res = 0
   {
      SetTimer, Timer, Off
      MsgBox, Отсчёт закончен
      ExitApp
   }
   Return

Выйдет, если языковая панель имеет ClassNN "CiceroUIWndFrame1".

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK: Запустить приложение по таймеру с индикатором в трее

Спасибо ребята!

5 (изменено: Вася Пупкин, 2014-12-04 17:56:00)

Re: AHK: Запустить приложение по таймеру с индикатором в трее

Потестировал твой вариант.
Понравился. Правда немного подправить пришлось.
Не знаю, может у меня в Windows 8 он себя так странно ведет.
Кароче, вот эту строчку:
Gui, +AlwaysOnTop
Я поднял выше, над "Return", и скрипт стал работать корректно.
В твоем варианте он работал не стабильно, неожиданно пропадал.
Иногда таймер из 10 секунд отображался в течении всего времени нормально,
а иногда пропадал. Иногда пропадал после 8-й секунды, иногда после 7-й.
Кароче, я не понял по какому событию он капризничал.
К сожалению мой вариант не работает прямо на панели задач, только рядом с панелью.


teadrinker пишет:

Вот так у меня получилось отражать окно с таймером поверх панели задач, слева от языковой панели:

hTray := WinExist("ahk_class Shell_TrayWnd")
ControlGetPos, X,,,, CiceroUIWndFrame1
WinGetPos,, Y_Tray,, H_Tray

Gui, -Caption +ToolWindow +AlwaysOnTop +Owner
Gui, Margin, 0, 0
Gui, Color, Black
Gui, Font, s10
Gui, Add, Text, % "center x0 y4 cWhite w" H_Tray " h" H_Tray - 8, % sec := 10
Gui, Show, % "NA x" X-50 " y" Y_Tray + 2
StartTime := A_TickCount
SetTimer, Timer, 100
Return

Timer:
   Gui, +AlwaysOnTop
   Time := (A_TickCount - StartTime)//1000
   if (Time != PrevTime)
   {
      GuiControl,, Static1, % res := sec - Time
      PrevTime := Time
   }
   if res = 0
   {
      SetTimer, Timer, Off
      MsgBox, Отсчёт закончен
      ExitApp
   }
   Return

Выйдет, если языковая панель имеет ClassNN "CiceroUIWndFrame1".

6

Re: AHK: Запустить приложение по таймеру с индикатором в трее

Панель задач имеет стиль AlwaysOnTop, поэтому она конкурирует с окном. На семёрке если по таймеру всё время возобновлять у окна этот стиль, оно не западает за панель задач. На восьмёрке, наверное, по-другому.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder