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

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

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

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

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

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

WinClose

Закрывает указанное окно.

WinClose [, WinTitle, WinText, SecondsToWait, ExcludeTitle, ExcludeText]

Параметры

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

Примечания

Эта команда посылает в окно закрывающее сообщение. Результат зависит от окна (оно может попросить сохранить данные и т.п.).

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

Эта команда работает с самым верхним окном всегда, кроме случая, когда WinTitle задан как ahk_group ИмяГруппы, в этом случае она воздействует на все окна группы.

WinClose посылает в окно сообщение WM_CLOSE, которое является отчасти принудительным способом закрытия окна. Альтернативой может быть следующий метод. Его результат может различаться для разных окон, т.к. он производит тот же эффект, что и нажатие Alt-F4 или щелчок по закрывающей кнопке в строке заголовка окна:

PostMessage, 0x112, 0xF060,,, WinTitle, WinText ; 0x112 = WM_SYSCOMMAND, 0xF060 = SC_CLOSE

Если окно не закрывается через WinClose, вы можете принудить его к закрытию командой WinKill.

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

Пример

IfWinExist, Безымянный - Блокнот
    WinClose ; Использует окно, найденное выше.
else
    WinClose, Калькулятор

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

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