Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также саму программу AutoHotkey и проблемы её использования)

Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.

Оригинал статьи в AutoHotkey.chm: "IfWinActive / IfWinNotActive", в содержании - "Window Management" - "IfWinActive/IfWinNotActive", v1.0.46.07.

Ник переводчика: YMP.

Настоящее имя переводчика: Юрий Попов.

IfWinActive / IfWinNotActive

Проверяет, существует ли указанное окно и является ли оно активным.

IfWinActive [, WinTitle, WinText, ExcludeTitle, ExcludeText]
IfWinNotActive [, WinTitle, WinText, ExcludeTitle, ExcludeText]
UniqueID := WinActive("WinTitle", "WinText", "ExcludeTitle", "ExcludeText")

Параметры

WinTitle Заголовок или часть заголовка окна (метод поиска можно задавать командой SetTitleMatchMode). Если этот и следующие 3 параметра опущены, будет использовано последнее найденное окно. Чтобы задать окно через его класс, используйте конструкцию ahk_class ТочноеИмяКласса (можно посмотреть программой Window Spy). Чтобы использовать идентификатор процесса (PID), задайте параметр как ahk_pid %ПеременнаяСодержащаяPID%. Чтобы использовать группу окон, задайте параметр как ahk_group ИмяГруппы. Чтобы использовать идентификатор окна, задайте параметр как ahk_id %ПеременнаяСодержащаяID%. Сектор поиска можно сузить, задав несколько критериев, например, My File.txt ahk_class Notepad.
WinText Подстрока из одиночного текстового элемента окна (можно посмотреть программой Window Spy). Скрытые текстовые элементы определяются, если включено определение скрытого текста (команда DetectHiddenText).
ExcludeTitle Окна, чей заголовок включает значение этого параметра, исключаются. Примечание: в целях обратной совместимости со скриптами AutoIt (.aut) этот параметр будет интерпретирован как команда, если он точно совпадает с именем какой-либо команды. Чтобы обойти это, используйте функцию WinActive().
ExcludeText Окна, чей текст включает значение этого параметра, исключаются.

Примечания

Если все параметры опущены, будет использовано последнее найденное окно.

Если любая из этих команд обнаруживает, что активное окно соответствует заданным параметрам, оно становится последним найденным. Другими словами, если результатом IfWinActive будет "true" или результатом IfWinNotActive будет "false", значение последнего найденного окна будет обновлено.

Функция WinActive() возвращает уникальный идентификатор (HWND) для активного окна, если оно соответствует указанным критериям. Если не соответствует, функция вернёт 0. Так как все не равные нулю числа расцениваются как "true", выражение If WinActive("WinTitle") истинно, если заданное в WinTitle окно активно.

Команда SetWinDelay не влияет на IfWinExist/IfWinActive.

Заголовки и текст окон чувствительны к регистру. Скрытые окна не определяются, если только это не задано командой DetectHiddenWindows.

Примеры

IfWinActive, Безымянный - Блокнот
{
    WinMaximize ; Разворачивает окно Блокнота, найденное IfWinActive.
    Send, Some text.{Enter}
    return
}

if WinActive("ahk_class Notepad") or WinActive("ahk_class" . ClassName)
; После "ahk_class" не обязательно вставлять пробел.
    WinClose ; Использует последнее найденное окно (закрывает).

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.