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
MsgBox , Optionen, Titel, Text, Zeitlimit

Parameter

Text

Wenn im 1-Parameter-Modus weggelassen, wird standardmäßig die Zeichenkette "Press OK to continue." verwendet. Wenn in einem anderen Modus weggelassen, wird standardmäßig eine leere Zeichenkette verwendet. Andernfalls geben Sie den Text an, der im Mitteilungsfenster angezeigt werden soll, um dem Benutzer anzuweisen, was zu tun ist, oder um Informationen zu präsentieren.

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.

Optionen

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

Dieser Parameter muss entweder eine direkt geschriebene Zahl oder in [v1.1.06+] ein erzwungener Ausdruck wie % Optionen sein. Jeder andere nicht-leere Wert bewirkt, dass der 1-Parameter-Modus in Kraft tritt und dieser Wert stattdessen als Teil des Text-Parameters erkannt wird.

Titel

Wenn leer oder weggelassen, wird standardmäßig der Name des Skripts (ohne Pfad) verwendet. Andernfalls geben Sie den Titel des Mitteilungsfensters an.

Zeitlimit

Wenn leer oder weggelassen, wird das Mitteilungsfenster nicht automatisch geschlossen. Andernfalls geben Sie ein Zeitlimit in Sekunden an, das einen Dezimalpunkt enthalten kann, aber standardmäßig kein Ausdruck sein darf. [v1.1.06+]: Dieser Parameter kann ein erzwungener Ausdruck wie % mins*60 sein.

Wenn ein Zeitlimit höher als 2147483 (24,8 Tage) angegeben ist, wird es automatisch auf 2147483 zurückgesetzt. Nach Ablauf des Zeitlimits wird das Mitteilungsfenster automatisch geschlossen und für IfMsgBox der Wert TIMEOUT gesetzt.

Die folgende Einschränkung wurde in [v1.1.30.01] beseitigt: Bei einem Mitteilungsfenster, das nur eine OK-Schaltfläche enthält, wird IfMsgBox davon ausgehen, dass die OK-Schaltfläche gedrückt wurde, wenn das Mitteilungsfenster das Zeitlimit überschreitet, während ihr eigener Thread inaktiv ist, weil er von einem anderen Thread unterbrochen wurde.

Werte für den Optionen-Parameter

Der Optionen-Parameter kann eine Kombination (Summe) von Werten aus den folgenden Gruppen sein.

Gruppe #1: Schaltflächen

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

Funktion Dezimal Hexadezimal
OK 0 0x0
OK / Abbrechen 1 0x1
Abbrechen / Wiederholen / Ignorieren 2 0x2
Ja / Nein / Abbrechen 3 0x3
Ja / Nein 4 0x4
Wiederholen / Abbrechen 5 0x5
Abbrechen / Wiederholen / Weiter 6 0x6

Gruppe #2: Symbol

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

Funktion Dezimal Hexadezimal
Handsymbol (Stopp / Fehler) 16 0x10
Fragezeichensymbol 32 0x20
Ausrufezeichensymbol 48 0x30
Sternchensymbol (Info) 64 0x40

Gruppe #3: Standardschaltfläche

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

Funktion Dezimal Hexadezimal
Macht die zweite Schaltfläche zur Standardschaltfläche 256 0x100
Macht die dritte Schaltfläche zur Standardschaltfläche 512 0x200
Macht die vierte Schaltfläche zur Standardschaltfläche
(benötigt die Hilfe-Schaltfläche)
768 0x300

Gruppe #4: Modalität

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

Funktion Dezimal Hexadezimal
System-Modal (immer im Vordergrund) 4096 0x1000
Task-Modal 8192 0x2000
Immer im Vordergrund (WS_EX_TOPMOST-Style)
(ähnlich wie System Modal, aber ohne Titelleistensymbol)
262144 0x40000

Gruppe #5: Sonstige Optionen

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

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

Bemerkungen

Ein typisches Mitteilungsfenster sieht wie folgt aus:

MsgBox

Die Werte in den obigen Tabellen können addiert werden, um Eigenschaften zu kombinieren, die im Mitteilungsfenster vorhanden sein sollen. Wenn Sie z.B. ein Ja/Nein-Mitteilungsfenster haben wollen, dessen Standardschaltfläche Nein statt Ja ist, müssen Sie für Optionen 256+4 (260) angeben. Hexadezimal ausgedrückt wäre das 0x100+0x4 (0x104).

MsgBox hat eine smarte Kommabehandlung, d.h. in der Regel müssen Kommas im Text-Parameter nicht mit einem Escapezeichen versehen werden.

Mit dem IfMsgBox-Befehl kann festgestellt werden, welche MsgBox-Schaltfläche der Benutzer zuletzt gedrückt hat. Zum Beispiel:

MsgBox, 4,, Möchten Sie fortfahren? (drücken Sie Ja oder Nein)
IfMsgBox Yes
    MsgBox Sie haben Ja gedrückt.
else
    MsgBox Sie haben Nein 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 Gui +OwnDialogs 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 Gui +OwnDialogs 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.

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 Gui +OwnDialogs 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.

IfMsgBox, InputBox, FileSelectFile, FileSelectFolder, ToolTip, GUI

Beispiele

Der 1-Parameter-Modus. 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 Dies ist der 1-Parameter-Modus. Kommas (,) müssen nicht mit einem Escapezeichen versehen werden.

Der 3-Parameter-Modus. Verwenden Sie den ersten und zweiten Parameter, um die Optionen und den Titel anzugeben.

MsgBox, 4, , Dies ist der 3-Parameter-Modus. Kommas (,) müssen nicht mit einem Escapezeichen versehen werden.

Verwenden Sie IfMsgBox, um festzustellen, welche MsgBox-Schaltfläche der Benutzer zuletzt gedrückt hat.

MsgBox, 4, , Möchten Sie fortfahren? (Drücken Sie JA oder NEIN)
IfMsgBox No
    return

Der 4-Parameter-Modus. Verwenden Sie den vierten Parameter (Zeitlimit), um das Mitteilungsfenster nach einer bestimmten Anzahl von Sekunden automatisch zu schließen.

MsgBox, 4, , 4-Parameter-Modus: Diese MsgBox schließt sich automatisch in 5 Sekunden.  Weiter?, 5
IfMsgBox Timeout
    MsgBox Sie haben innerhalb von 5 Sekunden weder JA noch NEIN gedrückt.
else IfMsgBox No
    return

Durch Voranstellen von % wird jeder Parameter zu einem Ausdruck. Das folgende Beispiel zeigt, wie eine Berechnung durchgeführt, auf ein Pseudo-Array-Element zugegriffen und eine Funktion aufgerufen werden kann. All diese Elemente werden mit dem Punkt-Operator verbunden, um eine einzelne Zeichenkette via MsgBox anzuzeigen.

MsgBox % "Die neue Breite des Objekts Nr. " . A_Index . " ist: " . BreiteBegrenzen(ObjektBreite%A_Index% * SkalierungFaktor)

Warnt den Benutzer, dass der Fokus gleich von einem Mitteilungsfenster beansprucht wird (falls der Benutzer gerade etwas schreibt).

SplashTextOn,,, Es erscheint gleich ein Mitteilungsfenster.
Sleep 3000
SplashTextOff
MsgBox Der Sicherungsprozess wurde abgeschlossen.