AutoHotKey - maneira elegante de esperar até que uma caixa de diálogo do sistema seja capaz de aceitar pressionamentos de tecla?

3

Sistema padrão Imprimir diálogo ou Salvar diálogo está engolindo as chaves enviadas imediatamente após a abertura . Existe uma maneira de enviar as chaves com sucesso o mais rápido possível?

Detalhes:

Vamos usar um caso de uso simples da caixa de diálogo Imprimir, ou seja, se você pressionar Ctrl + P no Internet Explorer. Uma vez aberto, eu só quero enviar Alt + p para pressionar o botão Imprimir o mais rápido possível. Mas o script a seguir não funciona:

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

Ele começa a funcionar quando insiro Sleep 500 antes de Send !p . Mas talvez 500 ms não seja suficiente em alguns casos. Existe alguma maneira elegante de inserir as teclas pressionadas o mais rápido possível?

    
por miroxlav 18.09.2015 / 10:16

1 resposta

2
#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

ou

; 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, ...
...
    
por 18.09.2015 / 13:11