AutoHotKey – elegante Möglichkeit zu warten, bis ein Systemdialogfeld Tastenanschläge annehmen kann?

AutoHotKey – elegante Möglichkeit zu warten, bis ein Systemdialogfeld Tastenanschläge annehmen kann?

StandardsystemDialogfeld „Drucken“oderDialogfeld „Speichern“schluckt gesendete Schlüsselsofort nach dem ÖffnenGibt es eine Möglichkeit, Schlüssel so schnell wie möglich erfolgreich zu versenden?

Einzelheiten:

Lassen Sie uns einen einfachen Anwendungsfall des Druckdialogs betrachten, d. h. wenn Sie im Internet Explorer Ctrl+ drücken P. Sobald es geöffnet ist, möchte ich nur Alt+ senden p, um dieDruckenso schnell wie möglich auf die Schaltfläche. Das folgende Skript funktioniert jedoch nicht:

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

Es funktioniert, wenn ich Sleep 500vor einfüge Send !p. Aber vielleicht reichen 500 ms in manchen Fällen nicht aus. Gibt es eine elegante Möglichkeit, Tastenanschläge so schnell wie möglich einzufügen?

Antwort1

#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

oder

; 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, ...
...

verwandte Informationen