Mit den folgenden Zeilen möchte ich euch ein kurzes Beispielscript zur Verwendung von Messageboxen zeigen, welches einem die Sprache AutoIT näher bringen soll – nicht im Theoretischen, sondern im Gefühl, wie man Funktionen und Makros anwendet, und wie man Parameter escaped (unterbricht) um Inhalte von Variablen oder Makros mit einfließen zu lassen.
Uhrzeit in Message-Box ausgeben
Folgendes Script soll die aktuelle Uhrzeit ausgeben. Die Messagebox soll zwei Buttons haben, „Yes“ und „No“ – bei einem Klick auf Yes soll sich die MsgBox schließen, und eine zweite mit dem aktuellen Datum aufpoppen.
Zuerst betrachtet man die AutoIT-Manual um eine Beschreibung für die Funktion „MsgBox()“ zu erhalten. Dort erfahren wir den Syntax der Funktion:
1 |
MsgBox ( flag, "title", "text" [, timeout] ) |
Wenn man weiter ließt, wird man feststellen, dass das Flag für die angezeigte Grafik (bspw. Stop-Schild, Info-Symbol, usw.) und die genutzten Buttons verantwortlich ist. In der Manual gibt es eine Tabelle, die diesen einzelnen Elementen Zahlen der Form 2^n zuordnet.
Möchte man also ein Info-Symbol, dazu ein Yes- und No-Button, addiert man die einzelnen Werte und gibt das Ergebnis als Flag an:
4 + 32 = 36.
Um die aktuelle Uhrzeit auszugeben, sucht man in der Manual nach der Makro-Liste. Makro’s sind allgemein bezeichnet Umgebungsvariablen, die man anhand des führenden „@“ erkennt. Mit Ihnen kann man bspw. die Uhrzeit, das Datum, den aktuellen Benutzernamen oder das Betriebssystem auslesen.
Um die Uhrzeit mit Sekunden anzugeben, benötigen wir die Makros @HOUR, @MIN und @SEC.
Los gehts:
1 2 |
MsgBox(36, "Es ist jetzt...", _ @HOUR & ":" & @MIN & ":" & @SEC & " Uhr.") |
Das Ergebnis:
Nun wollen wir noch die Funktion hinzufügen, dass sich beim Klick auf „Yes“ eine zweite Messagebox öffnet – mit dem aktuellen Datum. Dazu muss man wissen: Wenn mit einem Controlelement eines Fensters interagiert wird (Auf einen Button geklickt, einen Haken gesetzt, usw.), liefert das angewählte Element einen Rückgabewert. Welcher das ist, beschreibt wiederrum die Manual.
Im Falle von „Yes“ wäre dies die 6, im Falle „No“ die 7.
Wir erweitern das Script:
1 2 3 4 5 6 7 |
$uhrzeit = MsgBox(36, "Es ist jetzt...", _ @HOUR & ":" & @MIN & ":" & @SEC & " Uhr. " _ & @LF & "Möchten Sie das aktuelle Datum anzeigen lassen?") IF $uhrzeit = 6 Then MsgBox(0, "Aktuelles Datum", @MDAY & "." & @MON & "." & @YEAR) EndIf |
Kurze Erklärung: Um Funktionen, Makros oder Variablen zwischen Textelementen (… Uhr) einzubetten, muss die aktuelle Eingabe unterbrochen (Escaped) werden. Würde man „@HOUR:@MIN:@SEC“ als 3. Parameter für die Funktion MsgBox() angeben, würde diese nur den Text @HOUR:@MIN:@SEC ausgeben. Aus diesem Grund wird die aktuelle Eingabe durch „ unterbrochen. Um etwas an das vorherige Element zu hängen, wird der Operator & verwendet. Er verbindet Elemente (bspw. auch Zahlen, Zeichen und Texte).
@LF steht für „line feed“, was normalerweise für Zeilenumbrüche genutzt wird (Alternative zu n).
Wir packen in unserem Script die MsgBox in eine Variable. Danach schnüren wir eine IF-Anweisung, die den Inhalt der Variable $uhrzeit ausführt, und den Rückgabewert mit der Zahl 6 vergleicht. JEDE Funktion hat einen Rückgabewert (meist ob Erfolgreich oder Fehlgeschlagen), sodass man auch auf die erfolgreiche Ausführung eines Befehls prüfen kann.
Ist der Rückgabewert 6 (= auf YES geklickt), öffnet sich eine neue Messagebox mit dem aktuellen Datum.
Sehr gut!
Hat mir sehr viel weitergeholfen!
Super, wie ich mich freu 😀
LG, Jan Martin.
Gute Zusammenfassung, über Google gefunden. Danke, das habe ich gesucht 🙂
[…] Source-Code: cursed-treasure-hotkeys.au3 Danke an awesomeIT für die gute MsgBox Zusammenfassung. […]
Vielen Dank, das war extrem hilfreich. 🙂
Extrem hilfreich, stimmt!
Habe genau das gefunden, was ich gesucht habe. 😉
Das Datum Nich Die Zeit Man -.-
Problem Gelöst alle =
@YEAR
@YDAY
@MON
ich komme nicht weiter kann mir jemand helfen bitte?
#include
GUICreate(‚meins‘,400,400,100,250)
$1= GUICtrlCreateButton(‚1‘,10,10,50,50)
$2= GUICtrlCreateButton(‚2‘,100,10,50,50)
$3= GUICtrlCreateButton(‚3‘,190,10,50,50)
$4= GUICtrlCreateButton(‚4‘,10,100,50,50)
$5= GUICtrlCreateButton(‚5‘,100,100,50,50)
$6= GUICtrlCreateButton(‚6‘,190,100,50,50)
$7= GUICtrlCreateButton(‚7‘,10,190,50,50)
$8= GUICtrlCreateButton(‚8‘,100,190,50,50)
$9= GUICtrlCreateButton(‚9‘,190,190,50,50)
$0= GUICtrlCreateButton(‚0‘,10,280,50,50)
$feld = GUICtrlCreateInput(“,100,280,150,50)
$plus = GUICtrlCreateButton(‚+‘,280,10,50,50)
$minus =GUICtrlCreateButton(‚-‚,280,100,50,50)
$mal = GUICtrlCreateButton(‚*‘,280,190,50,50)
$geteilt = GUICtrlCreateButton(‚/‘,280,280,50,50)
$ergebnis = GUICtrlCreateButton(‚=‘,10,360,100,20)
GUISetState()
While 1
$msg = GUIGetMsg ()
Select
Case $msg = -3
Exit
Case $1 = $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 1)
Case $2= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 2)
Case $3= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 3)
Case $4= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 4)
Case $5= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 5)
case $6= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 6)
Case $7= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 7)
Case $8= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 8)
Case $9= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 9)
Case $0= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 0)
Case $geteilt= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& ‚/‘)
Case $mal= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& ‚*‘)
Case $minus= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& ‚-‚)
Case $plus= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& ‚+‘)
Case $ergebnis= $msg
EndSelect
WEnd
#include
GUICreate(‚meins‘,400,400,100,250)
$1= GUICtrlCreateButton(‚1‘,10,10,50,50)
$2= GUICtrlCreateButton(‚2‘,100,10,50,50)
$3= GUICtrlCreateButton(‚3‘,190,10,50,50)
$4= GUICtrlCreateButton(‚4‘,10,100,50,50)
$5= GUICtrlCreateButton(‚5‘,100,100,50,50)
$6= GUICtrlCreateButton(‚6‘,190,100,50,50)
$7= GUICtrlCreateButton(‚7‘,10,190,50,50)
$8= GUICtrlCreateButton(‚8‘,100,190,50,50)
$9= GUICtrlCreateButton(‚9‘,190,190,50,50)
$0= GUICtrlCreateButton(‚0‘,10,280,50,50)
$feld = GUICtrlCreateInput(“,100,280,150,50)
$plus = GUICtrlCreateButton(‚+‘,280,10,50,50)
$minus =GUICtrlCreateButton(‚-‚,280,100,50,50)
$mal = GUICtrlCreateButton(‚*‘,280,190,50,50)
$geteilt = GUICtrlCreateButton(‚/‘,280,280,50,50)
$ergebnis = GUICtrlCreateButton(‚=‘,10,360,100,20)
GUISetState()
While 1
$msg = GUIGetMsg ()
Select
Case $msg = -3
Exit
Case $1 = $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 1)
Case $2= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 2)
Case $3= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 3)
Case $4= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 4)
Case $5= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 5)
case $6= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 6)
Case $7= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 7)
Case $8= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 8)
Case $9= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 9)
Case $0= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& 0)
Case $geteilt= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& ‚/‘)
Case $mal= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& ‚*‘)
Case $minus= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& ‚-‚)
Case $plus= $msg
GUICtrlSetData ($feld,GUICtrlRead($feld)& ‚+‘)
Case $ergebnis= $msg
EndSelect
WEnd