Как закрыть / свернуть / развернуть или отправить ключи в окно или всплывающее окно с помощью 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
Выберите тот, который соответствует вашим потребностям тщательно, чтобы реагировать только на правильное окно.