AutoHotKey - cara menunggu yang ellegant sampai kotak dialog sistem dapat menerima penekanan tombol?

3

Sistem standar Dialog cetak atau Simpan dialog sedang menelan kunci segera setelah dibuka . Apakah ada cara bagaimana mengirim kunci berhasil sesegera mungkin?

Detail:

Mari kita gunakan beberapa kasus penggunaan sederhana dialog Cetak, yaitu jika Anda menekan Ctrl + P di Internet Explorer. Setelah terbuka, saya hanya ingin mengirim Alt + hal untuk menekan tombol Mencetak tombol sesegera mungkin. Tetapi skrip berikut tidak berfungsi:

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

Itu mulai bekerja ketika saya memasukkan Sleep 500 sebelum Send !p. Tetapi mungkin 500 ms tidak akan cukup dalam beberapa kasus. Apakah ada cara yang elegan bagaimana cara memasukkan penekanan tombol ASAP?

miroxlav
sumber

Jawaban:

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

atau

; 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, ...
...
user3419297
sumber
Hebat, bekerja! Mungkin menentukan ahk_class #32770 sedikit berlebihan - bukan?
miroxlav
Saya melihat triknya adalah aktivasi. Jendela segera disajikan sebagai fokus (aktif), tetapi tampaknya sebenarnya belum aktif. Aktivasi memecahkan masalah
miroxlav