MsgBox Timeout auswerten

  • Hallo

    ich habe eine MsgBox die ich auf OK abfrage, und wenn ok betätigt wurde wird eine Funktion ausgeführt.

    Ist es möglich beim Timeout der MsgBox die gleiche Funktion auszuführen?

    If MsgBox(1, "logoff", "ausloggen?") = $IDOK Then das ausführen bei OK funktioniert.

    If MsgBox(1, "logoff", "ausloggen?") = $IDOK OR $IDTimeOUT Then / hier wird jetzt immer ausgeführt auch bei abbrechen, und beim Timeout gehts erst weiter nach einem Mausklick

    was mache ich denn hier falsch

  • ProGramm 23. Mai 2019 um 09:35

    Hat das Label [ offen ] hinzugefügt.
  • alpines 23. Mai 2019 um 09:41

    Hat das Label von [ offen ] auf [ gelöst ] geändert.
  • Hi ProGramm !

    Hier ein kleines Beispiel :

    Tipp am Rande :

    Verwende (zumindest bei längeren Skripten) die vordefinierten Konstanten, also z.B. :

    Statt : MsgBox(1,... ==> MsgBox($MB_OKCANCEL,...   (verbessert die Lesbarkeit ;))

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Mahlzeit,

    Musashi schreibt: MsgBox(1,... ==> MsgBox($MB_OKCANCEL,...   (verbessert die Lesbarkeit)

    Darüber gab es schon mal hitzige Gespräche, man kann da auch anderer Meinung sein ::)

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Hi Peter !

    Musashi schrieb : MsgBox(1,... ==> MsgBox($MB_OKCANCEL,... (verbessert die Lesbarkeit)


    Darüber gab es schon mal hitzige Gespräche, man kann da auch anderer Meinung sein :)

    Anderer Meinung kann man immer sein (na ja, man darf vielleicht nicht gerade AKK fragen) :P.

    Bei Q&D-Skripten und in der Testphase (zur Anzeige von Werten) schreibe ich meist auch einfach :

    MsgBox(0, "Titel", "Text...")

    Ansonsten verwende ich aber lieber die Konstanten, da sie m.M.n. aussagekräftiger sind.

    Man nehme als Beispiel eine Messagebox mit folgenden Flags :

    - $MB_SYSTEMMODAL (4096) -> System-Modal (Dialog hat ein Icon)

    - $MB_ICONQUESTION (32) -> Icon 'Fragezeichen' anzeigen

    - $MB_ABORTRETRYIGNORE (2) -> Buttons 'Abbrechen', 'Wiederholen' und 'Ignorieren' - $MB_DEFBUTTON2 (256) -> zweiter Button ist der Standardbutton

    - $MB_TOPMOST (262144) -> immer im Vordergrund angezeigen

    Bei 266530 weiß ich nicht sofort was gemeint ist.

    Bei BitOR($MB_SYSTEMMODAL, $MB_ICONQUESTION, $MB_ABORTRETRYIGNORE, $MB_DEFBUTTON2, $MB_TOPMOST) schon.

    Damit dieses ellenlange Teil nicht direkt im Aufruf der MsgBox erscheint, verwende ich :

    Global $iMsgBoxFlag  ; globale Hilfsvariable zur Gestaltung der MsgBoxflags

    Code
    #include <MsgBoxConstants.au3>
    Global $iMsgBoxFlag ; globale Hilfsvariable zur Gestaltung der MsgBox
    
    $iMsgBoxFlag = BitOR($MB_SYSTEMMODAL, $MB_ICONQUESTION, $MB_ABORTRETRYIGNORE, $MB_DEFBUTTON2, $MB_TOPMOST)
    MsgBox($iMsgBoxFlag, "Titel der MsgBox : ", "Wie möchten Sie verfahren ? ")

    (beim Rückgabewert liest sich z.B. $IDABORT auch besser als 3)

    Diese sogenannten 'magic numbers' führen eher dazu, dass 'Fehler' übersehen werden.

    Beispiel FileOpen - Modus : BitOR($FO_OVERWRITE, $FO_ANSI) vs. 514 usw.

    Erneute "hitzige Gespräche" sind nicht nötig, da es ja jede(r) machen kann wie sie/er will ;).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Bei 29 Grad im Schatten auch zu warm :)

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)