AutoHotKey – элегантный способ дождаться, пока системное диалоговое окно сможет принимать нажатия клавиш?

AutoHotKey – элегантный способ дождаться, пока системное диалоговое окно сможет принимать нажатия клавиш?

Стандартная системаДиалог печатиилиСохранить диалогпроглатывает ключи отправленныесразу после открытия. Есть ли способ успешно отправить ключи как можно скорее?

Подробности:

Давайте рассмотрим простой пример использования диалогового окна «Печать», например, если вы нажмете Ctrl+ Pв Internet Explorer. После того, как он откроется, я просто хочу отправить Alt+ p, чтобы нажатьРаспечататькнопку как можно скорее. Но следующий скрипт не работает:

#IfWinActive, ahk_class IEFrame
F2::
    Send ^p
    WinWait, Print,, 2
    Send !p   ; this has no effect if sent immediately
Return
#IfWinActive

Начинает работать, когда я вставляю Sleep 500перед Send !p. Но, возможно, 500 мс будет недостаточно в некоторых случаях. Есть ли какой-то элегантный способ, как вставлять нажатия клавиш как можно скорее?

решение1

#IfWinActive, ahk_class IEFrame

F2:: 
    Send ^p
    WinWait, Print ahk_class #32770     ; Waits until the specified window exists
    IfWinNotActive, Print ahk_class #32770, ,WinActivate, Print ahk_class #32770
    WinWaitActive, Print ahk_class #32770   ; Waits until the specified window is active 
    Send !p
Return

#IfWinActive

или

; WinWait, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText

WinWait, Print ahk_class #32770, WinText  ; Use Window Spy to find out a single text element of the target window 
IfWinNotActive, ...
...

Связанный контент