Яндекс.Метрика

Last Found Window -Autohotkey

Это самое последнее по времени окно, найденное командами IfWin[Not]Exist, IfWin[Not]Active, WinWait[Not]Active или WinWait. Наличие такого окна по умолчанию упрощает код скрипта, т.к. делает ненужным повторение параметров WinTitle и WinText для каждой оконной команды. Вдобавок улучшается производительность скрипта, поскольку ему не нужно искать окно снова и снова.

Последнее найденное окно

Это самое последнее по времени окно, найденное командами IfWin[Not]Exist, IfWin[Not]Active, WinWait[Not]Active или WinWait. Наличие такого "окна по умолчанию" упрощает код скрипта, т.к. делает ненужным повторение параметров WinTitle и WinText для каждой оконной команды. Вдобавок улучшается производительность скрипта, поскольку ему не нужно искать окно снова и снова.

Последнее найденное окно может использоваться всеми оконными командами, кроме WinWait, WinActivateBottom и GroupAdd. Чтобы использовать его, просто опускайте все 4 параметра (WinTitle, WinText, ExcludeTitle и ExcludeText).

Каждый поток скрипта сохраняет своё собственное значение для последнего найденного окна, т.е. если поток прерван (приостановлен) другим потоком, то по его возобновлении его последнее найденное окно будет тем же, что и до прерывания (а не тем, которое было у прервавшего его потока).

Если последним найденным окном является скрытое окно Gui, оно может быть использовано, даже если отключено обнаружение скрытых окон (команда DetectHiddenWindows). Это часто используется в сочетании с командой Gui +LastFound.

Примеры

Run Notepad WinWait Безымянный - Блокнот WinActivate ; Использует окно, найденное выше. IfWinExist, Безымянный - Блокнот { WinActivate ; Использует окно, найденное выше. WinMaximize ; То же. Send, Some text.{Enter} return } IfWinNotExist, Калькулятор return else { WinActivate ; Использует последнее найденное окно, установленное IfWinNotExist выше. WinMove, 40, 40 ; Передвигает его в другое место. return }

Способы задания параметра WinTitle

Если несколько окон удовлетворяют условиям, заданным параметрами WinTitle или WinText какой-либо оконной команды, используется самое верхнее из них. Например, если указанным критериям отвечает активное окно, оно и будет использовано, даже если ниже его есть окна, также отвечающие этим критериям.

Активное окно (А): почти все оконные команды могут работать с активным окном, если задать параметр WinTitle буквой А и опустить параметры WinText, ExcludeTitle и ExcludeText. В следующем примере комбинация Win-Стрелка вверх становится горячей клавишей, разворачивающей активное окно: #Up::WinMaximize A

Класс окна (ahk_class): все оконные команды могут находить окна по их классу, который можно посмотреть программой Window Spy или получить через команду WinGetClass. В следующем примере активируется двухпанельное окно Проводника: WinActivate ahk_class ExploreWClass

Уникальный идентификатор/HWND (ahk_id): все оконные команды могут работать с окном или его элементами управления, используя их уникальный идентификационный номер. Например: WinActivate ahk_id %ПеременнаяСодержащаяID%. Идентификатор окна можно узнать через WinExist() или WinGet. Идентификатор элемента управления - через ControlGet Hwnd, MouseGetPos, или DllCall (с версии 1.0.40.05 через ahk_id можно работать также и со скрытыми элементами управления, даже если обнаружение скрытых окон не было включено командой DetectHiddenWindows).

Идентификатор процесса/PID (ahk_pid): все оконные команды могут работать с окнами через идентификатор процесса, которому принадлежат эти окна. Например, команда WinClose ahk_pid %ПеременнаяСодержащаяPID% закроет верхнее окно процесса. PID можно узнать командами WinGet, Run или Process.

Оконная группа (ahk_group): все оконные команды могут работать с окнами, входящими в группу, если задать параметр WinTitle как ahk_group ИмяГруппы. Команды WinMinimize, WinMaximize, WinRestore, WinHide, WinShow, WinClose и WinKill действуют на все окна группы. Напротив, такие команды, как WinActivate и IfWinExist работают с верхним окном группы.

Несколько критериев (с версии 1.0.36.02): в отличие от ahk_group в предыдущем параграфе, расширяющего область поиска, задание в WinTitle сразу нескольких критериев позволяет сузить поиск. В следующем примере скрипт будет ожидать появления окна, чей заголовок включает My File.txt и чей класс Notepad:

WinWait My File.txt ahk_class Notepad WinActivate ; Активировать найденное окно.

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

Теги страницы: