MsgBox

Zeigt einen bestimmten Text in einem kleinen Fenster an, das eine oder mehrere Schaltflächen enthält (z.B. Ja und Nein).

MsgBox Text, Titel, Optionen
Ergebnis := MsgBox(Text, Titel, Optionen)

Parameter

Text

Typ: Zeichenkette

Wenn weggelassen und "OK" die einzige Schaltfläche ist, wird standardmäßig die Zeichenkette "Press OK to continue." verwendet. Wenn in jedem anderen Fall weggelassen, wird standardmäßig eine leere Zeichenkette verwendet. Andernfalls geben Sie den Text an, der im Mitteilungsfenster angezeigt werden soll.

Mit Escapesequenzen können Sonderzeichen dargestellt werden. Zum Beispiel kann mit `n (LF-Zeichen) die aktuelle Zeile beendet und eine neue begonnen werden. Entsprechend würde Text1`n`nText2 eine Leerzeile zwischen Text1 und Text2 erzeugen.

Wenn Text relativ lang ist, kann es via Fortsetzungsbereich in mehrere kurze Zeilen aufgeteilt werden, um die Übersichtlichkeit und Wartbarkeit des Skripts zu verbessern.

Titel

Typ: Zeichenkette

Wenn weggelassen, wird standardmäßig der aktuelle Wert von A_ScriptName verwendet. Andernfalls geben Sie den Titel des Mitteilungsfensters an.

Optionen

Typ: Zeichenkette

Wenn leer oder weggelassen, wird standardmäßig 0 verwendet (nur eine OK-Schaltfläche anzeigen). Andernfalls geben Sie eine Kombination (Summe) von Werten oder eine Zeichenkette von einer oder mehreren Optionen aus den unteren Tabellen an, um den Typ des Mitteilungsfensters und die möglichen Schaltflächenkombinationen zu bestimmen.

Zusätzlich können beliebig viele der folgenden Optionen angegeben werden:

Owner: Um ein übergeordnetes Fenster für das Mitteilungsfenster zu bestimmen, verwenden Sie das Wort Owner gefolgt von einer HWND-Nummer (eindeutige ID).

T: Timeout (Zeitlimit). Um das Mitteilungsfenster automatisch zu schließen, wenn der Benutzer es nicht innerhalb einer bestimmten Zeit geschlossen hat, verwenden Sie den Buchstaben T gefolgt von einem Zeitlimit in Sekunden, das einen Dezimalpunkt enthalten kann. Wenn ein Zeitlimit höher als 2147483 (24,8 Tage) angegeben ist, wird es automatisch auf 2147483 zurückgesetzt. Wenn das Mitteilungsfenster das Zeitlimit überschreitet, ist der Rückgabewert das Wort Timeout.

Werte für den Optionen-Parameter

Der Optionen-Parameter kann entweder eine Kombination (Summe) von Werten aus den folgenden Gruppen sein, die direkt an die MessageBox-Funktion des Betriebssystems übergeben wird, oder eine Zeichenkette von beliebig vielen Optionen (nicht Groß-/Kleinschreibung-sensitiv), die mit mindestens einem Leer- oder Tabulatorzeichen voneinander getrennt sind. Die Zeichenkette kann auch beliebig viele numerische Optionen enthalten.

Gruppe #1: Schaltflächen

Um zu bestimmen, welche Schaltflächen im Mitteilungsfenster angezeigt werden, addieren Sie einen der folgenden Werte:

Funktion Dez Hex Zkette
OK 0 0x0 OK oder O
OK, Abbrechen 1 0x1 OKCancel, O/C oder OC
Abbrechen, Wiederholen, Ignorieren 2 0x2 AbortRetryIgnore, A/R/I oder ARI
Ja, Nein, Abbrechen 3 0x3 YesNoCancel, Y/N/C oder YNC
Ja, Nein 4 0x4 YesNo, Y/N oder YN
Wiederholen, Abbrechen 5 0x5 RetryCancel, R/C oder RC
Abbrechen, Wiederholen, Weiter 6 0x6 CancelTryAgainContinue, C/T/C oder CTC

Gruppe #2: Symbol

Um ein Symbol im Mitteilungsfenster darzustellen, addieren Sie einen der folgenden Werte:

Funktion Dez Hex Zkette
Handsymbol (Stopp / Fehler) 16 0x10 Iconx
Fragezeichensymbol 32 0x20 Icon?
Ausrufezeichensymbol 48 0x30 Icon!
Sternchensymbol (Info) 64 0x40 Iconi

Gruppe #3: Standardschaltfläche

Um die Standardschaltfläche zu bestimmen, addieren Sie einen der folgenden Werte:

Funktion Dez Hex Zkette
Macht die zweite Schaltfläche zur Standardschaltfläche 256 0x100 Default2
Macht die dritte Schaltfläche zur Standardschaltfläche 512 0x200 Default3
Macht die vierte Schaltfläche zur Standardschaltfläche
(benötigt die Hilfe-Schaltfläche)
768 0x300 Default4

Gruppe #4: Modalität

Um die Modalität des Dialogfensters zu bestimmen, addieren Sie einen der folgenden Werte:

Funktion Dez Hex Zkette
System-Modal (immer im Vordergrund) 4096 0x1000 N/A
Task-Modal 8192 0x2000 N/A
Immer im Vordergrund (WS_EX_TOPMOST-Style)
(ähnlich wie System Modal, aber ohne Titelleistensymbol)
262144 0x40000 N/A

Gruppe #5: Sonstige Optionen

Um sonstige Optionen anzugeben, addieren Sie einen oder mehrere der folgenden Werte:

Funktion Dez Hex Zkette
Fügt eine Hilfe-Schaltfläche hinzu (siehe Bemerkungen) 16384 0x4000 N/A
Macht den Text rechtsbündig 524288 0x80000 N/A
Rechts-nach-Links-Leselayout für Hebräisch / Arabisch 1048576 0x100000 N/A

Rückgabewert

Typ: Zeichenkette

Diese Funktion gibt eine der folgenden Zeichenketten zurück, die die zuletzt gedrückte Schaltfläche repräsentiert:

Wenn das Dialogfenster nicht angezeigt werden konnte, wird eine leere Zeichenkette zurückgegeben. Dies tritt normalerweise nur auf, wenn das MsgBox-Limit erreicht wurde, kann aber auch in anderen Ausnahmefällen auftreten.

Fehlerbehandlung

Bei Misserfolg wird ein Error ausgelöst, z.B. wenn die Optionen ungültig sind, das MsgBox-Limit erreicht wurde oder das Mitteilungsfenster aus anderen Gründen nicht angezeigt werden konnte.

Bemerkungen

Ein typisches Mitteilungsfenster sieht wie folgt aus:

MsgBox

Verwenden Sie den Rückgabewert der Funktion, um festzustellen, welche Schaltfläche der Benutzer gedrückt hat. Zum Beispiel:

Ergebnis := MsgBox("Möchten Sie fortfahren? (drücken Sie Ja oder Nein)",, "YesNo")
if Ergebnis = "Yes"
    MsgBox "Sie haben Ja gedrückt."
else
    MsgBox "Sie haben Nein gedrückt."

if MsgBox("Wiederholen oder Abbrechen?",, "R/C") = "Retry"
    MsgBox("Sie haben Wiederholen gedrückt.")

Um die Namen der Schaltflächen anzupassen, siehe Schaltflächennamen der MsgBox ändern.

Hinweis: Sie können Strg+C in einem aktiven Mitteilungsfenster drücken, um dessen Text in die Zwischenablage zu kopieren. Diese Methode kann auch bei AutoHotkey-fremden Mitteilungsfenstern angewendet werden.

MsgBox mit einem GUI-Fenster verwenden: Ein GUI-Fenster kann ein modales Mitteilungsfenster mittels OwnDialogs-Option darstellen. Ein modales Mitteilungsfenster hindert den Benutzer daran, mit dem GUI-Fenster zu interagieren, bis er das Mitteilungsfenster wieder schließt. In diesem Fall können die Optionen System-Modal oder Task-Modal weggelassen werden.

Wenn die OwnDialogs-Option nicht aktiv ist, kann die Task-Modal-Option (8192) verwendet werden, um die Interaktion mit allen Skriptfenstern zu unterbinden, bis der Benutzer das Mitteilungsfenster schließt.

Wenn die OwnerHWND-Option angegeben ist, hat sie Vorrang vor allen anderen Einstellungen. HWND kann die HWND-Nummer (eindeutige ID) eines beliebigen Fensters sein, auch eines Fensters, das nicht zum Skript gehört.

Die Hilfe-Schaltfläche: Wenn die Hilfe-Schaltfläche-Option (16384) in Optionen vorhanden ist, funktioniert die Hilfe-Schaltfläche nur unter den folgenden Bedingungen:

  1. Das Mitteilungsfenster wurde einem GUI-Fenster mittels OwnDialogs-Option untergeordnet.
  2. Das Skript überwacht die WM_HELP-Meldung (0x0053). Zum Beispiel: OnMessage(0x0053, WM_HELP). Dies bewirkt, dass die WM_HELP-Funktion aufgerufen wird, sobald der Benutzer die Hilfe-Schaltfläche drückt. Diese Funktion könnte z.B. ein anderes GUI-Fenster oder Mitteilungsfenster anzeigen, das Hilfestellungen für den Benutzer enthält.

Die Schließen-Schaltfläche (in der Titelleiste des Mitteilungsfensters): Da das Mitteilungsfenster ein vom Betriebssystem bereitgestelltes Feature ist, hängt die Verfügbarkeit und das Verhalten der X-Schaltfläche davon ab, welche Schaltflächen vorhanden sind. Wenn nur die OK-Schaltfläche vorhanden ist, wäre das Drücken von X das gleiche wie, als hätte man OK gedrückt. Andernfalls ist die X-Schaltfläche deaktiviert, es sei denn, die Abbrechen-Schaltfläche ist vorhanden, dann wäre das Drücken von X das gleiche wie, als hätte man Abbrechen gedrückt.

Maximal 7 aktive Aufrufe: Der Thread, der ein Mitteilungsfenster anzeigt, kann normalerweise unterbrochen werden, damit der neue Thread sein eigenes Mitteilungsfenster anzeigen kann, bevor der vorherige Aufruf zurückkehrt. Es sind maximal 7 aktive MsgBox-Aufrufe erlaubt. Jeder Aufruf nach dem siebten löst einen Error aus. Beachten Sie, dass ein MsgBox-Aufruf in einem unterbrochenen Thread nicht zum Aufrufer zurückkehrt, bis der Thread fortgesetzt wird.

InputBox, FileSelect, DirSelect, ToolTip, Gui-Objekt

Beispiele

Zeigt ein Mitteilungsfenster mit einem bestimmten Text an. Eine schnelle und einfache Möglichkeit, Informationen anzuzeigen. Der Benutzer kann eine OK-Schaltfläche drücken, um das Mitteilungsfenster zu schließen und die Ausführung fortzusetzen.

MsgBox "Das ist eine Zeichenkette."

Zeigt ein Mitteilungsfenster mit einem bestimmten Text und Titel an.

MsgBox "Diese MsgBox hat einen benutzerdefinierten Titel.", "Ein benutzerdefinierter Titel"

Zeigt ein Mitteilungsfenster mit dem Standardtext an. Überwiegend nützlich für Debugging-Zwecke, z.B. um schnell einen Haltepunkt im Skript zu setzen.

MsgBox ; "Press OK to continue."

Zeigt ein Mitteilungsfenster mit einem bestimmten Text, einem Titel und einem Info-Symbol an. Außerdem wird ein Fortsetzungsbereich verwendet, um den mehrzeiligen Text übersichtlicher darzustellen.

MsgBox "
  (
    Der erste Parameter wird als Mitteilung angezeigt.
    Der zweite Parameter ist der Fenstertitel.
    Der dritte Parameter bestimmt den Typ des Mitteilungsfensters.
  )", "Fenstertitel", "iconi"

Verwenden Sie den Rückgabewert, um festzustellen, welche MsgBox-Schaltfläche der Benutzer zuletzt gedrückt hat. Beachten Sie, dass in diesem Fall der MsgBox-Funktionsaufruf mit runden Klammern angegeben werden muss.

Ergebnis := MsgBox("Möchten Sie fortfahren? (drücken Sie Ja oder Nein)",, "YesNo")
if (Ergebnis = "No")
    return

Verwenden Sie die T-Option (Zeitlimit), um das Mitteilungsfenster nach einer bestimmten Anzahl von Sekunden automatisch zu schließen.

Ergebnis := MsgBox("Diese MsgBox schließt sich automatisch in 5 Sekunden.  Weiter?",, "Y/N T5")
if (Ergebnis = "Timeout")
    MsgBox "Sie haben innerhalb der 5 Sekunden weder JA noch NEIN gedrückt."
else if (Ergebnis = "No")
    return

Fügen Sie eine Variable oder einen Teilausdruck in die Mitteilung ein. Siehe auch: Verkettung

var := 10
MsgBox "Der Initialwert ist: " var
MsgBox "Das Ergebnis ist: " var * 2
MsgBox Format("Das Ergebnis ist: {1}", var * 2)