web-dev-qa-db-ja.com

AutoHotKey –システムダイアログボックスがキーストロークを受け入れることができるようになるまで待つエレガントな方法?

標準システムダイアログの印刷またはダイアログの保存送信されたキーを飲み込んでいます開いた直後。できるだけ早くキーを正常に送信する方法はありますか?

詳細:

印刷ダイアログの簡単な使用例をいくつか見てみましょう。 Ctrl+P InternetExplorerで。開いたら送信したい 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ミリ秒では不十分なこともあります。キーストロークをできるだけ早く挿入するためのエレガントな方法はありますか?

4
miroxlav
#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, ...
...
2
user3419297