2017-09-29 4 views
0

開いているウィンドウのリストを取得し、特定のタイトルが含まれているかどうかを確認します。動作していますが、10秒以上かかります。なぜそれが長くかかるのですが、私のコードで何が間違っていますか?WinList()の結果をループするのに多くの時間がかかります

WinList()のように見えるウィンドウのみが表示されません。あなたのタスクのための

$title = 0 
$begintime = TimerInit() 
MsgBox($MB_OK, "Timer", "Timer inicialized") 

While $title = 0 

    $aList = WinList() 

    For $x = 1 To $aList[0][0] 

     ;Check if a window with this title exists. 
     if $aList[$x][0] = "WindowTitle" Then 

      If $lastruntitle = "WindowTitle" Then 

       $title = 1 
       ExitLoop(2) 

      Else 

       SendMail4() 
       $lastruntitle = "WindowTitle" 
       $title = 1 
       ExitLoop(2) 

      EndIf 

     EndIf 

    Next 

WEnd 
+1

は、スクリプトまたは開始時の公然すでにウィンドウの開始後に必要なウィンドウを開きますか? 'While'ループを本当に使用する必要がある場合、少なくともsleep(100)を追加しなければなりません。それ以外のCPUはオーバーロードされます。 SendMail4()関数も表示します。 – matrix

答えて

1

簡単な解決策は以下のとおりです。

#include <Array.au3> 

While 1 
    $aList = WinList() 
    _ArraySearch($aList, "WindowTitle", 0, 0, 0, 0, 1, 0) 
    If Not @error Then 
     MsgBox(0,"","Window found!") 
     Exit 
    EndIf 
    Sleep(100) 
WEnd 
関連する問題