Winactive("xxx"), Hotkeyset und Msgbox klappt nicht ganz

  • Hallo,
    ich habe verschiedene GUIs und je nach dem, welche gerade aktiv ist (Winactive("Fenstername 1") z.B.) soll Hotkeyset("{ENTER}", ...) eine andere Funktion ausführen. Wenn ein Fenster ohne Hotkeyset aktiv wird, soll dieser Hotkey wieder freigegeben werden If Winactive("Fenster1") <> 0 And ... Then (Hotkeyset("{ENTER}").
    Soweit klappt schonmal alles.
    Ist jetzt allerdings eine MsgBox im Vordergrund wird der Hotkey trotzdem nicht freigegen, was oft Problematiken hevorruft. Wie kann ich nun herausfinden, ob eine Msgbox oder eines meiner GUI Fenster aktiv ist? Mit Wingettitle geht es ebenfalls nicht.

    Vielen Dank,
    Aquaplant

    Einmal editiert, zuletzt von Aquaplant (15. September 2010 um 12:32)

  • Ich glaube da würde keiner so schnell durchblicken, hier sind aber die wichtigen:

    [autoit]

    If WinActive("Passwort einrichten") = 0 And WinActive("Passwortaufforderung") = 0 And WinActive("Neues Konto") = 0 And WinActive("Neuer Kontoeintrag") = 0 Then
    HotKeySet("{Enter}")
    EndIf

    [/autoit]
    Spoiler anzeigen
    [autoit]

    If WinActive("Passwort einrichten") <> 0 Then
    HotKeySet("{Enter}", "_Passwort")
    Switch $nMsg
    Case $ButtonPWeOK
    _Passwort()
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $GUIPWe)
    EndSwitch
    EndIf
    If WinActive("Neues Konto") <> 0 Then
    HotKeySet("{Enter}", "_NeuesKontoerstellen")
    Switch $nMsg
    Case $ButtonNKErst
    _NeuesKontoerstellen()
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $GuiNK)
    Case $RadioNKBar
    GUICtrlSetState($InputNKblz, $GUI_DISABLE)
    GUICtrlSetState($InputNKknr, $GUI_DISABLE)
    GUICtrlSetState($InputNKInstitut, $GUI_DISABLE)
    Case $RadioNKKonto
    GUICtrlSetState($InputNKblz, $GUI_ENABLE)
    GUICtrlSetState($InputNKknr, $GUI_ENABLE)
    GUICtrlSetState($InputNKInstitut, $GUI_ENABLE)
    EndSwitch
    EndIf
    If WinActive("Neue laufende Kosten") <> 0 Then
    HotKeySet("{Enter}", "_Neuelaufendekostenerstellen")
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $GuiNK)
    Case $ButtonNLKOK
    _Neuelaufendekostenerstellen()
    EndSwitch
    EndIf

    [/autoit]

    1. Deaktivieren
    2. Aktivieren, wenn das entsprechende Fenster aktiv ist

    Wenn bei den Fenstern jetzt allerdings eine Msgbox in den Vordergrund rückt (sehen alle so aus: MsgBox(64, "", "Irgendein Text")), dann wird der Hotkey nicht mehr freigegeben, die Funktion also erneut ausgeführt, falls man die Msgbox mit Enter bestätigen will und nicht auf den Button klickt.

  • Das klappt wahrscheinlich nicht, weil das Programm immer noch denkt, das GUI Fenster wäre aktiv, und nicth die MsgBox. So würde ich zwar kurz den Hotkey deaktivieren, aber das Programm ihn direkt wieder aktivieren. Ich probiers aber mal aus

    // Danke für die Idee, es klappt (wieso auch immer^^) :)