Hallo zusammen,
in meinem Skript ist eine Funktion, die ein Programm überwacht, ob es Messageboxen öffnet.
Je nach Titel der Messagbox wird dann eine Aktion ausgeführt.
Ich benutze bisher eine While Schleife und frage mich, ob es noch besser geht. Denn im Schleifenkopf stehen insgesamt 7 Sachen die geprüft müssen. Denn ich habe 7 Messagebox-Titel in ein Array die beim durchlaufen natürlich allesamt geprüft werden müssen.
Hier mal die Funktion:
[autoit][/autoit][autoit][/autoit][autoit]Func checkOpenMessages()
Local $msgBoxArr[7] = ["Titel1", "Titel2", "Titel3", "Titel4", "Titel5", "Titel6, "Titel7"]
Local $msgBoxText[4] = ["Text1", "Text2", "Text3"]
Local $returnValue = 1
Sleep(200)
While WinExists($msgBoxArr[0]) = 1 Or WinExists($msgBoxArr[1]) = 1 Or WinExists($msgBoxArr[2]) = 1 Or WinExists($msgBoxArr[3]) = 1 Or WinExists($msgBoxArr[4]) = 1 Or WinExists($msgBoxArr[5]) = 1 Or WinExists($msgBoxArr[6]) = 1
For $i = 0 To UBound($msgBoxArr) - 1
WinActivate($msgBoxArr[$i])
Select
Case StringLeft(ControlGetText($msgBoxArr[$i], "", "[CLASS:Static; INSTANCE:3]"), StringLen($msgBoxText[0])) = $msgBoxText[0]
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:2]");Klick Nein an
$returnValue = -1
Case StringLeft(ControlGetText($msgBoxArr[$i], "", "[CLASS:Static; INSTANCE:3]"), StringLen($msgBoxText[1])) = $msgBoxText[1]
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:1]");Klick OK
$returnValue = 1
Case StringLeft(ControlGetText($msgBoxArr[$i], "", "[CLASS:Static; INSTANCE:3]"), StringLen($msgBoxText[2])) = $msgBoxText[2]
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:1]");Klick OK
$returnValue = -1
Case StringLeft(ControlGetText($msgBoxArr[$i], "", "[CLASS:Static; INSTANCE:3]"), StringLen($msgBoxText[3])) = $msgBoxText[3]
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:1]");Klick OK
$returnValue = -1
Case Else
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:1]")
$returnValue = 1
EndSelect
WinWaitClose($msgBoxArr[$i], "", 3000)
Next
WEnd
Return $returnValue
EndFunc ;==>checkOpenMessages
Wie könnte ich die While Schleife vereinfachen? Funktionieren tut es auch so. Aber ich glaube es geht besser...
Vielen Dank schon mal
Grüße
Sebastian