Как закрыть / свернуть / развернуть или отправить ключи в окно или всплывающее окно с помощью Autohotkey?

Как использовать Autohotkey, чтобы автоматически закрывать, сворачивать, максимизировать или отправлять ключи в окно, как только оно появляется? Я могу обнаружить диалог и закрыть его с этим:

WinWaitActive, TITLE
WinClose, TITLE

Но это не работает, если окно не открывается при выполнении скрипта.

1 ответ

Решение

Это очень распространенная задача, для которой используется AHK.

Сначала вам нужен заголовок окна, к которому вы хотите обратиться. Прочтите Как получить заголовок окна с помощью AHK?,

Код

Для основной функциональности закрытия окна нам нужны Loop, WinWaitActive и WinClose.

Пример для окна Firefox с открытым переполнением стека.

Loop {
  WinWaitActive, Stack Overflow - Mozilla Firefox
  WinClose,
}

объяснение

Loop повторяет процесс, чтобы закрыть окно несколько раз. WinWaitActive ждет, пока окно не активируется (всплывает) и WinClose закрывает это.

Подсказка: если вы не укажете конкретный заголовок окна, как с WindowClose последнее найденное окно, которое является одним из WinWaitActive используется.

минимизации / максимизации

Вместо WinClose используйте WinMaximize или WinMinimize, чтобы выполнить соответствующее действие.

Отправка ключей

Если вы хотите отправить определенные ключи (например, Enter) в окно, используйте Отправить

Loop {
  WinWaitActive, Stack Overflow - Mozilla Firefox
  send {Enter}
}

дополнения

Если базовая версия не работает или вы хотите создать более сложный скрипт, вот несколько возможных модификаций.

Больше силы

Если WinClose не работает попробуйте WinKill или Send, !{F4} использовать больше силы.

Как админ

Для закрытия окна могут потребоваться права администратора. Используйте этот фрагмент кода в верхней части скрипта, чтобы убедиться, что он работает с полным доступом.

If not A_IsAdmin ;force the script to run as admin
{
    Run *RunAs "%A_ScriptFullPath%"
    ExitApp
}

Другие подходящие методы

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

Вместо заголовка можно использовать класс окна (ahk_class) или.exe (ahk_exe) из Window Spy.

WinWaitActive, ahk_class MozillaWindowClass

или WinWaitActive, ahk_exe firefox.exe

Выберите тот, который соответствует вашим потребностям тщательно, чтобы реагировать только на правильное окно.

Другие вопросы по тегам