Перейти на главную страничку сайта (список статей, файлы для скачивания)
Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.
Оригинал статьи в AutoHotkey.chm: "The «Last Found» Window", по ссылке из статьи "IfWinActive / IfWinNotActive", в содержании - "Window Management" - "IfWinActive/IfWinNotActive", v1.0.46.07.
Ник переводчика: YMP.
Настоящее имя переводчика: Юрий Попов.
Это самое последнее по времени окно, найденное командами 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 или 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 ; Активировать найденное окно.
При использовании этого метода текст заголовка нужно указывать первым, а уже затем - остальные критерии. Все критерии после первого должны отделяться друг от друга в точности одним пробелом или одной табуляцией (все лишние пробелы и табуляции будут считаться частью предыдущего критерия).
Перейти на главную страничку сайта (список статей, файлы для скачивания)
© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.