2

2 つのステップで動作する自動送信スクリプトがあります。

  1. ターゲット プログラムを実行し、プログラム内でデータベース更新コマンドを開始します。
  2. WinWaitNotActive (つまり、データベースの更新が終了) の後、ターゲット プログラムで 2 番目の「検索」コマンドを実行します。

これは問題なく動作していますが、遅すぎます。データベースの更新後、最大 10 ~ 15 秒かかります。WinWaitNotActive を高速化する方法はありますか? WinWait の代わりに Sleep を 8 秒間使用してみましたが、データベースの更新が完了する前に 2 番目のコマンドが実行されることがありました。

プロセスのアクティビティを監視し、特定のレベルを下回ったら 2 番目のコマンドを実行することはできますか?

コードは次のとおりです。

send !w::
Run "Target"
/'Update Command'
WinWaitNotActive, Target, , ,
Run "Target"
/'Search Command' "Search Term"
return
4

1 に答える 1

1

SetTimerウィンドウの状態を確認するために、任意の間隔で使用できます。

Run "Target"
; /'Update Command'
SetTimer, CheckWindow, -200  ; this check the window every 200 milliseconds
return

CheckWindow:
    if WinActive, Target
        return
    Run "Target"
    ; /'Search Command' "Search Term"
    SetTimer, % A_ThisLabel, Off      ; stop the timer
Return
于 2012-11-30T06:48:37.620 に答える