Probleme mit WinWait - Programm hängt

  • Könnt ihr euch mal bitte diesen Code ansehen?
    Er besteht aus 3 Teilen: Quest, Dialog und Skript. Der Quest- und der Dialog-Teil sind identisch, abgesehen von den Fenstertiteln und den Control-IDs.
    Der Dialog-Teil funktioniert problemlos, beim Quest-Teil hängt sich das Programm bei WinWait auf, obwohl das Fenster erscheint.
    Aber warum? Ich habe WinTitleMatchMode so eingestellt, dass auch Teile des Titels reichen, das geht doch auch mit WinWait, oder nicht?
    Oder übersehe ich irgendwas anderes?

    Spoiler anzeigen
    [autoit]


    If $save_array[0][0] = "Quest" Then
    If WinExists("Quest:") Then
    $toolbar = _GUICtrlToolbar_FindToolbar("TES Construction Set", "")
    _GUICtrlToolbar_ClickIndex($toolbar, 21)
    WinWait("Multiple Quest Windows")
    ControlClick("Multiple Quest Windows", "", 6)
    WinWait("Quest:")
    ControlSend("Dialogue", "", 2468, "{DOWN " & $save_array[0][1] -1 & "}")
    _ArrayDelete($save_array, 0)
    Else
    $toolbar = _GUICtrlToolbar_FindToolbar("TES Construction Set", "")
    _GUICtrlToolbar_ClickIndex($toolbar, 22)
    WinWait("Quest:")
    ControlSend("Quest", "", 2468, "{DOWN " & $save_array[0][1] -1 & "}")
    _ArrayDelete($save_array, 0)
    EndIf
    ElseIf $save_array[0][0] = "Skript" Then
    ;~ ...
    _ArrayDelete($save_array, 0)
    ElseIf $save_array[0][0] = "Dialog" Then
    If WinExists("Dialogue") Then
    $toolbar = _GUICtrlToolbar_FindToolbar("TES Construction Set", "")
    _GUICtrlToolbar_ClickIndex($toolbar, 22)
    WinWait("Multiple Dialogue Windows")
    ControlClick("Multiple Dialogue Windows", "", 6)
    WinWait("Dialogue")
    ControlSend("Dialogue", "", 1448, "{DOWN " & $save_array[0][1] -1 & "}")
    _ArrayDelete($save_array, 0)
    Else
    $toolbar = _GUICtrlToolbar_FindToolbar("TES Construction Set", "")
    _GUICtrlToolbar_ClickIndex($toolbar, 22)
    WinWait("Dialogue")
    ControlSend("Dialogue", "", 1448, "{DOWN " & $save_array[0][1] -1 & "}")
    _ArrayDelete($save_array, 0)
    EndIf
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von penta.phoenix (18. Februar 2009 um 21:46)

    • Offizieller Beitrag

    Schau mal ob das stimmt :

    [autoit]

    If WinExists("Dialogue") Then

    [/autoit]

    Fenstertitel eventuel so ? Dialogue: .Beim Quest hatte das Fenster auch ein : .Oder umgekehrt sollte es Quest statt Quest: heißen ? Kontrollier mal die Fenstertitel.

  • Die Fenstertitel stimmen, zumindest teilweise.
    Der Quest-Titel ist variabel, also "Quest: ID", wobei ID alles mögliche sein kann.
    Bei Dialogue funktioniert es ohne Probleme. Deshalb habe ich allmählich das Gefühl, dass WinTitleMatchMode nicht für WinWait gilt. Sonst müsste das Fenster ja auch per "Quest:" gefunden werden.

    Edit: Heute geht's wieder. Ich versteh die Welt in dem Fall nicht, aber egal, es tut.

    Einmal editiert, zuletzt von penta.phoenix (18. Februar 2009 um 21:47)