MsgBox

Zeigt den angegebenen Text in einem kleinen Fenster an, das einen oder mehrere Buttons enthält (z. B. Ja und Nein).

MsgBox, Text
MsgBox [, Optionen, Titel, Text, Zeitüberschreitung]

Parameter

Text

Fehlen alle Parameter, wird die Message Box "Press OK to continue." anzeigen. Ansonsten ist dieser Parameter ein Text, der innerhalb des Message Box 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 zu lang ist, kann er in mehreren kurzen Zeilen aufgeteilt werden (Fortsetzungsbereich), um ihn besser lesbar und verwaltbar zu machen.

Optionen

Bestimmt den Typ der Message Box und die möglichen Button-Kombinationen. Fehlt dieser Parameter oder ist er leer, gilt standardmäßig 0. Siehe untere Tabelle, welche Werte zulässig sind.

Dieser Parameter muss entweder eine literale Zahl oder (seit v1.1.06) ein erzwungener Ausdruck wie % Optionen sein. Jeder andere nicht-leere Wert wird als Teil des Textes im Einzelparametermodus betrachtet.

Titel

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

Zeitlimit

(Optional) Zeitlimit in Sekunden, das einen Dezimalpunkt enthalten kann, aber standardmäßig kein Ausdruck ist. Seit v1.1.06 kann ein Ausdruck wie % mins*60 erzwungen werden.

Überschreitet dieser Wert 2.147.483 (24,8 Tage), wird er automatisch auf 2.147.483 zurückgesetzt. Nachdem das Zeitlimit abgelaufen ist, wird die Message Box automatisch geschlossen und der IfMsgBox-Befehl den Wert TIMEOUT sehen.

Bekannte Einschränkung: Enthält die Message Box nur einen OK-Button, wird der IfMsgBox-Befehl denken, dass der OK-Button gedrückt wurde, wenn die Message Box das Zeitlimit überschritten hat, während ihr eigener Thread von einem anderen Thread unterbrochen wird.

Der Optionen-Parameter kann eine Kombination (Summe) von einem oder mehreren der folgenden Werte sein.

Funktion Dezimal-Wert Hex-Wert
OK (also wo nur ein OK-Button angezeigt wird) 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
Fügt ein Hilfe-Button hinzu (siehe Bemerkungen) 16384 0x4000
     
Handsymbol (Stopp / Fehler) 16 0x10
Fragezeichensymbol 32 0x20
Ausrufezeichensymbol 48 0x30
Sternchensymbol (Info) 64 0x40
     
Macht den zweiten Button zum Standard-Button 256 0x100
Macht den dritten Button zum Standard-Button 512 0x200
Macht den vierten Button zum Standard-Button
(Hilfe-Button muss vorhanden sein)
768 0x300
     
System Modal (immer im Vordergrund) 4096 0x1000
Task Modal 8192 0x2000
Immer im Vordergrund (WS_EX_TOPMOST-Style)
(Wie System Modal, aber ohne Symbol in der Titelleiste)
262144 0x40000
     
Richtet den Text nach rechts aus 524288 0x80000
Rechts-nach-Links-Leselayout für Hebräisch / Arabisch 1048576 0x100000

Bemerkungen

Die Werte in der oberen Tabelle können addiert werden, um Eigenschaften zu kombinieren, die du in der Message Box sehen willst. Um beispielsweise eine Ja/Nein-Box zu haben, wo Nein statt Ja der Standard-Button ist, müsste man in den Optionen 256+4 (260) angeben. In Hexadezimal 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.

Mit dem IfMsgBox-Befehl kann man feststellen, welchen Button der Benutzer in der aktuellsten MsgBox gedrückt hat. Zum Beispiel:

MsgBox, 4,, Möchten Sie fortfahren? (Ja oder Nein drücken)
IfMsgBox Yes
    MsgBox Sie haben Ja gedrückt.
else
    MsgBox Sie haben Nein gedrückt.

Die Namen der Buttons können mit diesem Beispiel geändert werden.

Tipp: Drückt man STRG+C, während die Message Box aktiv ist, wird ihr Text in die Zwischenablage kopiert. Diese Möglichkeit kann bei allen Message Boxes angewendet werden, nicht nur bei solchen, die mit AutoHotkey erstellt worden sind.

MsgBox mit einem GUI-Fenster verwenden: Ein GUI-Fenster kann eine modale Message Box mithilfe von Gui, +OwnDialogs darstellen. Solange ein modales Dialogfenster offen ist, kann der Benutzer nicht mit dem GUI-Fenster interagieren. In so einem Fall ist es nicht notwendig, die System-Modal- oder Task-Modal-Option aus der oberen Tabelle anzugeben.

Wenn Gui +OwnDialogs nicht aktiv ist, kann mit der Task-Modal-Option (8192) jedes Skriptfenster deaktiviert werden, solange die Message Box offen ist.

Der Hilfe-Button: Sofern die Hilfe-Button-Option (83) in den Optionen angegeben ist, wird der Hilfe-Button erst eine Wirkung haben, wenn die beiden folgenden Bedingungen erfüllt sind:

  1. Die Message Box wurde einem GUI-Fenster mithilfe von Gui +OwnDialogs untergeordnet.
  2. Das Skript überwacht die WM_HELP-Nachricht (0x53). Zum Beispiel: OnMessage(0x53, "WM_HELP"). Durch Aufrufen der WM_HELP-Funktion könnte man den Benutzer zusätzliche Hinweise mithilfe eines weiteren Fensters oder Message Box geben.

Der Schließen-Button (in der Titelleiste der MsgBox): Da die Message Box ein Built-in-Feature vom Betriebssystem ist, wird ihr X-Button nur aktiv sein, wenn bestimmte Buttons vorhanden sind. Gibt es nur einen OK-Button, wäre das Anklicken von X das gleiche wie, als würde man OK drücken. Gibt es einen Abbrechen-Button, wäre das Anklicken von X das gleiche wie, als würde man Abbrechen drücken. Ansonsten ist der X-Button deaktiviert.

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 die 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 In den 5 Sekunden haben Sie weder auf JA noch auf 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 über die
; 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 beim Schreiben ist).
SplashTextOn,,, Gleich wird eine MsgBox erscheinen.
Sleep 3000
SplashTextOff
MsgBox Der Sicherungsprozess wurde abgeschlossen.