Teil des Fensternamen vergleichen

  • Hallo, ich bins wieder ;)
    Ich wollte mal etwas fragen. Also, ich habe jetzt einen Text eingegeben, da sich aber der Fenstername öfters ändert und nur ein Teil immer gleich bleibt will ich wissen, wie ich meinen eingegebenen Text mit dem Fensternamen vergleiche.

    D.h. der Fenstertitel ist z.B. "Neues Thema erstellen - Hilfe & Unterstützung - AutoIt.de - Das deutsche AutoIt-Forum - Mozilla Firefox" und ich habe jetzt als Beispiel "Mozilla Firefox" eingegeben und will herausfinden, ob der Fenstertitel meinen eingegebenen Text enthält. Wie mache ich das? Also, welche Funktion tut das und wie benutzt man diese?

    Mfg Rey

  • Danke. Habe es vorhin schoneinmal gefunden, aber nur aus zufall und hatte es da noch nicht gebrauchen können. Aber das bringt mit jetzt immer noch nicht so viel, da ich ja den eingegebenen Text habe und auch veile Fenster geöffnet habe (diese sind unabhängig voneinander). Möchte nun das Fenster finden, welches den eingegebenen Text als Teil des Titels hat.

    Kann mir da noch jemand erklären wie das geht?

    Mfg Rey

  • [autoit]

    Opt("WinTitleMatchMode",2)
    $hFirefox = WinGetHandle("Mozilla Firefox")
    ; bla...

    [/autoit]


    Das ist genau das was du suchst, du musst nur n bisschen mitdenken... :huh:

    MfG

    [autoit]

    If ProcessExists("Sig.exe") Then
    ConsoleWrite("@@ mfg")
    Else
    ConsoleWrite("!! -no sig-")
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von RechterWinkel (30. November 2012 um 21:51)

  • Möchte nun das Fenster finden, welches den eingegebenen Text als Teil des Titels hat.

    Kann mir da noch jemand erklären wie das geht?

    Hat Christoph54 mit dem Hinweis auf Lesen schon getan.
    In dem von Ihm verlinkten Hilfeeintrag zu Opt() ist wiederrum der Link zu folgender Seite: >>Link<<
    Dort steht, wie Christoph54 bereits sagte, die Lösung zu deiner Frage.

  • Okay da ich noch ein Anfänger bin, mir das noch etwas zu hoch ist und mir grade was anderes überlegt habe wollte ich das gerne auch schnell hier fragen.

    Kann ich denn einfach eine Liste machen und mir alle offenen Fenster (mit Namen) darin anzeigen lassen, damit ich dann mein gewünschtes Fenster auswählen kann und darauf mit dem Script fortfahren kann?

    Mfg Rey

  • So, habe es nun hinbekommen, dass es mir nun die Namen aller Fenster auswirft, aber nur in einer MsgBox. Ich will diese Namen aber in meiner ListBox haben und jeden einzelnen Namen in einer neuen Zeile.

    Sieht nun so aus:

    Spoiler anzeigen
    [autoit]

    For $i = 1 to $var[0][0]
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    MsgBox(0,"Info",$var[$i][0])
    GUICtrlCreateListViewItem($var[$i][0], $list_window)
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]
  • Ich hoffe ich hab dein Anliegen richtig verstanden... ;)

    [autoit]

    MsgBox(64,"_AskForWin()",_AskForWin("Titel"))
    Func _AskForWin($askTitle = "_AskForWin()")
    $askForm = GUICreate($askTitle, 204, 218, 342, 243)
    $askList = GUICtrlCreateListView("Title |Handle", 8, 8, 187, 175) ; Spaces für die Spaltenbreite
    $askButton = GUICtrlCreateButton("Choose", 8, 192, 187, 17)
    $askWin = WinList()
    For $i = 1 to $askWin[0][0]
    If $askWin[$i][0] <> "" AND BitAND(WinGetState($askWin[$i][1]),2) Then
    GUICtrlCreateListViewItem($askWin[$i][0] & "|" & $askWin[$i][1], $askList)
    EndIf
    Next
    GUISetState()
    While 1
    $askMsg = GUIGetMsg()
    Switch $askMsg
    Case -3 ;$GUI_EVENT_CLOSE
    GUIDelete($askForm)
    SetError(1)
    Return False
    Case $askButton
    If not GUICtrlRead($askList) Then
    MsgBox(16,Default,"Kein Eintrag ausgewählt")
    Else
    $askSelected = StringSplit(GUICtrlRead(GUICtrlRead($askList),2),"|")
    GUIDelete($askForm)
    Return HWnd($askSelected[2])
    EndIf
    EndSwitch
    WEnd
    EndFunc

    [/autoit]
    [autoit]

    If ProcessExists("Sig.exe") Then
    ConsoleWrite("@@ mfg")
    Else
    ConsoleWrite("!! -no sig-")
    EndIf

    [/autoit]
  • Hi,
    Aus der Hilfe zu den erweiterten Fenstertiteln/Beschreibungen

    Zitat

    REGEXPTITLE - Fenstertitel, der eine regular expression benutzt (ist der reguläre Ausdruck falsch, wird @error auf 2 gesetzt)
    REGEXPCLASS - Fenster Klassenname verwendet einen regular expression benutzt (ist der reguläre Ausdruck falsch, wird @error auf 2 gesetzt)

    [autoit]

    #include <array.au3>
    $a=WinList("[REGEXPTITLE:\d]") ;listet nur fenster auf mit einer Ziffer im Titel
    _arraydisplay($a)

    [/autoit]