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 alle Parameter weggelassen werden, zeigt das Mitteilungsfenster "Press OK to continue." an. Ansonsten ist dieser Parameter der Text, der im Mitteilungsfenster angezeigt werden soll, um den Benutzer zu sagen, was zu tun ist, oder um Informationen zu präsentieren.

Mit Escapesequenzen können spezielle Zeichen dargestellt werden. Zum Beispiel wäre `n ein Zeilenumbruchszeichen, das die aktuelle Zeile beendet und eine neue beginnt. Demzufolge würde Text1`n`nText2 eine leere Zeile zwischen Text1 und Text2 erzeugen.

Wenn der Text-Parameter relativ lang ist, kann er mithilfe eines Fortsetzungsbereichs in mehreren kurzen Zeilen aufgeteilt werden, um ihn übersichtlicher zu machen.

Optionen

Kennzeichnet den Typ des Mitteilungsfensters und die möglichen Schaltflächenkombinationen. Fehlt dieser Parameter oder ist er leer, gilt standardmäßig 0. Die zulässigen Werte finden Sie in den folgenden Tabellen.

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 Einzelparametermodus in Kraft tritt und dieser Wert stattdessen als Teil des Text-Parameters erkannt wird.

Titel

Der Titel des Mitteilungsfensters. Fehlt dieser Parameter oder ist er leer, gilt standardmäßig der Name des Skripts (ohne Pfad).

Zeitlimit

(Optional) Zeitlimit in Sekunden, der einen Dezimalpunkt enthalten kann, aber standardmäßig kein Ausdruck ist. [v1.1.06+]: Dieser Parameter kann ein erzwungener Ausdruck wie % mins*60 sein.

Wenn ein Zeitlimit höher als 2.147.483 (24,8 Tage) angegeben ist, wird es automatisch auf 2.147.483 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 denken, dass die OK-Schaltfläche gedrückt wurde, wenn das Mitteilungsfenster das Zeitlimit überschreitet, während ihr eigener Thread von einem anderen Thread unterbrochen wird.

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 sollen, addiert man einen der folgenden Werte:

Funktion Dezimal-Wert Hex-Wert
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: Icon

Um ein Symbol im Mitteilungsfenster darzustellen, addiert man einen der folgenden Werte:

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

Gruppe #3: Standard-Schaltfläche

Um die Standard-Schaltfläche zu bestimmen, addiert man einen der folgenden Werte:

Funktion Dezimal-Wert Hex-Wert
Macht die zweite Schaltfläche zur Standard-Schaltfläche 256 0x100
Macht die dritte Schaltfläche zur Standard-Schaltfläche 512 0x200
Macht die vierte Schaltfläche zur Standard-Schaltfläche
(erfordert die Hilfe-Schaltfläche)
768 0x300

Gruppe #4: Modalität

Um die Modalität des Dialogfensters zu bestimmen, addiert man einen der folgenden Werte:

Funktion Dezimal-Wert Hex-Wert
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, addiert man einen oder mehrere der folgenden Werte:

Funktion Dezimal-Wert Hex-Wert
Fügt eine Hilfe-Schaltfläche hinzu (siehe Bemerkungen) 16384 0x4000
Richtet den Text nach rechts aus 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 oberen Tabellen können addiert werden, um Eigenschaften zu kombinieren, die beim Mitteilungsfenster vorhanden sein sollen. Wenn Sie beispielsweise ein Ja/Nein-Mitteilungsfenster haben wollen, dessen Standard-Schaltfläche Nein statt Ja ist, müssen Sie in den Optionen den Wert 256+4 (260) angeben. Hexadezimal ausgedrückt wäre das 0x100+0x4 (0x104).

MsgBox hat eine intelligente Komma-Handhabung - das heißt, dass Kommas im Text-Parameter nicht mit einem Escapezeichen versehen werden müssen.

Der IfMsgBox-Befehl kann genutzt werden, um festzustellen, 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 individuell anzupassen, ist dieses Beispiel hilfreich.

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

MsgBox mit einem GUI-Fenster verwenden: Ein GUI-Fenster kann ein modales Mitteilungsfenster mithilfe von Gui, +OwnDialogs darstellen. Ein modales Mitteilungsfenster bewirkt, dass der Benutzer erst wieder mit dem GUI-Fenster interagieren kann, wenn er Mitteilungsfenster schließt. In so einem Fall können die Optionen System-Modal oder Task-Modal weggelassen werden.

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

Die Hilfe-Schaltfläche: Um die Hilfe-Schaltfläche im Mitteilungsfenster zu aktivieren, gibt man den Wert 16384 im Optionen-Parameter an. Allerdings wird diese Schaltfläche erst funktionieren, wenn folgende Bedingungen zutreffen:

  1. Das Mitteilungsfenster wurde einem GUI-Fenster mithilfe von Gui +OwnDialogs untergeordnet.
  2. Das Skript überwacht die WM_HELP-Meldung (0x53). Zum Beispiel: OnMessage(0x53, "WM_HELP"). Diese Anweisung bewirkt, dass, sobald der Benutzer die Hilfe-Schaltfläche drückt, die WM_HELP-Funktion aufgerufen wird. Diese Funktion könnte zum Beispiel ein anderes GUI-Fenster oder Mitteilungsfenster anzeigen, um den Benutzer Instruktionen mitzuteilen.

Die Schließen-Schaltfläche (in der Titelleiste des Mitteilungsfensters): Aufgrund der Tatsache, dass das Mitteilungsfenster intern vom Betriebssystem kontrolliert wird, sind die Verfügbarkeit und das Verhalten der X-Schaltfläche abhängig davon, 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. Ansonsten ist die X-Schaltfläche deaktiviert, es sei denn, die Abbrechen-Schaltfläche ist vorhanden - in diesem Fall wäre das Drücken von X das gleiche wie, als hätte man Abbrechen gedrückt.

Siehe auch

IfMsgBox, InputBox, FileSelectFile, FileSelectFolder, ToolTip, GUI

Beispiel

MsgBox Das ist der Einzelparametermodus. Kommas (,) müssen nicht mit einem Escapezeichen versehen werden.
MsgBox, 4, , Das ist der Dreiparametermodus. Kommas (,) müssen nicht mit einem Escapezeichen versehen werden.
MsgBox, 4, , Möchten Sie fortfahren? (Drücken Sie JA oder NEIN)
IfMsgBox No
    return
MsgBox, 4, , Vierparametermodus: Diese MsgBox wird in 5 Sekunden automatisch geschlossen.  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 #" . A_Index . " ist: " . BreiteBegrenzen(Objektbreite%A_Index% * Skalierungsfaktor)

; Das folgende Beispiel warnt den Benutzer, dass der Fokus gleich von einer MsgBox beansprucht wird (falls der Benutzer gerade schreibt).
SplashTextOn,,, Gleich wird eine MsgBox erscheinen.
Sleep 3000
SplashTextOff
MsgBox Der Sicherungsprozess wurde abgeschlossen.