Search code examples
windowautoitdetection

Looping through WinList() result takes much time


I get a list of open windows and check if it contains a certain title. It is working but takes more than 10 seconds. Why does it take so long, what is wrong with my code?

Looks like WinList() doesn't list only visible windows.

$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

Solution

  • Simple solution for your task is:

    #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