Arraysearch mit Platzhaltern

  • Hallo Gemeinde,

    ich muss ein Arraysearch machen um in der Fensterliste von WinList das Fenster mit dem Titel:
    > HWiNFO64 Pro v7.46-5110 @ LENOVO ThinkPad T14 Gen 3 - System-Zusammenfassung [D] < zu finden.

    Leider wird der Fenstertitel von Version zu Version immer wieder abgeändert und je nach Systemsprache erscheint der Titel in Deutsch oder Englisch.

    Was bis jetzt immer gleich geblieben ist sind die Sequenzen > HWiNFO64 < am Anfang und > - System- <

    Alle Versuche unter Verwendung von Platzhaltern den Fenstertitel im Array $aList zu finden sind gescheitert. Hat jemand eine Idee
    was ich da übersehe oder falsch mache?

    Spoiler anzeigen

    Local $iPID = ShellExecute(".\HWiNFO64.EXE", "", "", "open") ; HWiNFO64.Exe öffnet drei Fenster, wobei nur das o.g. für mich das wichtige ist

    Local $sWwait = WinWait("HWiNFO64 Pro")

    GUISetState(@SW_HIDE, $hGui) ; Splashsreen verstecken ; der Splashscreen wird angezeigt, da es mitunter mehrere Minuten dauern kann bis HWiNFO etwas anzeigt.

    Local $vValue = "(HWiNFO)*(-System)" ; das ist der Begriff mit den Platzhaltern

    Local $aList = WinList()

    _ArrayDisplay($aList, "WindowListe")

    Local $s_Ergb = _ArraySearch($aList, $vValue, 0, 0, 0, 1, 1, -1, False)

    MsgBox(0, 'Index', "Der Index heisst: " & $s_Ergb & " Fehler: " & @error) ; Ergebnis von _Arraysearch ist -1 und 6($vValue wurde im Array nicht gefunden)

  • Warum machst du es nicht 2 geteilt?

    Arraysearch für z.B. "HWiNFO64" und dann durchsuchst du die Ergebnisse (nur benötigt, falls mehr als 1!) mit 2. Arraysearch nach "- System-" und solltest dann doch max. 1 Eintrag finden!?

  • Hm, danach hatte ich gesucht aber den Post nicht mehr gefunden... :D:D:D

    Aber ich habe eine glaube ich elegantere Lösung gefunden:

    Code
    Local $aList = WinList("[REGEXPTITLE:(?i)(.*HWiNFO.*- System-.*)]")
    
            Local $sTitel = $aList[1][0]


    Die Func WinList gibt so nur ein Array mit einem Index aus, nämlich den des Fenstertitels ;)

    Moombas, ich danke dir für deine Ideen. Die haben mich schlussendlich zu der Lösung geführt. :klatschen::party:

  • Kein Problem, musste nur schmunzeln, das du fast 1:1 die gleiche Frage zu scheinbar fast 1:1 dem gleichen Problem schon mal hattest.

    Achja: Der Google Suchbegriff war "autoit arraysearch wildcard" ^^ fürs nächste mal vielleicht :P