AutoHotkey Anfänger-Tutorial von tidbit

Inhaltsverzeichnis

  1. Die Grundlagen
    1. AutoHotkey herunterladen
    2. Wie erstellt man ein Skript
    3. Befehle kann man nicht zusammenführen
    4. Sonstige grundlegende Informationen
  2. Hotkeys & Hotstrings
    1. Tasten und Symbole
    2. Fenster-spezifisch
    3. Mehrere Hotkeys pro Datei
    4. Beispiele
  3. Senden von Tastatureingaben
    1. Spiele
  4. Starten von Programmen & Webseiten
  5. Befehle vs. Funktionen()
    1. Code-Blöcke
  6. Variablen
    1. Wann und wo Prozentzeichen verwendet werden
    2. Abrufen von Benutzereingaben
    3. Weitere Beispiele
  7. Objekte
    1. Erstellen von Objekten
    2. Verwenden von Objekten
  8. Andere hilfreiche Goodies
    1. Die mysteriösen eckigen Klammern
    2. Herausfinden Ihrer AHK-Version
    3. Trial-and-Error-Prinzip
    4. Einrückung
    5. Um Hilfe bitten
    6. Andere Links

1 - Die Grundlagen

Bevor wir mit unserer Reise beginnen, will ich Ihnen folgende Ratschläge geben. Über das ganze Tutorial hinweg werden Sie auf viel Text und Code treffen. Um AutoHotkey optimal zu lernen, ist es ratsam, den Text zu lesen und die Beispielcodes auszuprobieren. Erst danach sollten Sie versuchen, die Codes zu analysieren.
Die meisten Beispiele auf dieser Seite können Sie kopieren und in Ihrem Texteditor einfügen.
Wenn Sie einen Abschnitt nicht auf Anhieb verstehen, empfehle ich Ihnen, ihn nochmal durchzulesen.

a. AutoHotkey herunterladen und installieren

Bevor Sie überhaupt etwas mit AutoHotkey (AHK) machen können, müssen Sie das Programm herunterladen. Danach müssen Sie AHK eventuell installieren, je nachdem, welche Version Sie heruntergeladen haben. In diesem Guide verwenden wir den Installer, da er am einfachsten zu bedienen ist.

Anleitung:

  1. Öffnen Sie die Hauptseite von AutoHotkey. https://autohotkey.com/
  2. Klicken Sie auf Download. https://autohotkey.com/download/ahk-install.exe
  3. Während der Installation von AutoHotkey werden Sie gefragt, ob UNICODE oder ANSI installiert werden soll. Ich würde Ihnen UNICODE empfehlen. Es unterstützt nicht-englische Buchstaben und Zahlen (Zeichen). Setzen Sie die Installation fort, bis Sie eine Schaltfläche sehen, mit der AutoHotkey schließlich installiert werden kann.
  4. Sobald das erledigt ist, großartig! Weiter zu Abschnitt b.

Video-Anleitung (englisch):
Install and Hello World (englisch) von Frankie

b. Wie erstellt man ein Skript

Die folgende Anleitung zeigt, wie man AutoHotkey dazu bringen kann, etwas zu tun. AutoHotkey ist keine Zauberei - wir alle wünschten, es wäre so, ist es aber nicht. Also müssen wir AutoHotkey sagen, was zu tun ist. Diesen Vorgang nennt man "Scripting".

Anleitung:

  • 1. Machen Sie einen Rechtsklick auf Ihrem Desktop.
  • 2. Finden Sie "Neu" im Menü.
  • 3. Klicken Sie auf "AutoHotkey Script" innerhalb des "Neu"-Menüs.
  • 4. Geben Sie dem Skript einen neuen Namen. Hinweis: Der Name muss mit .ahk enden. Zum Beispiel: MeinSkript.ahk
  • 5. Finden Sie die neu erstellte Datei auf Ihrem Desktop und machen Sie einen Rechtsklick darauf.
  • 6. Klicken Sie auf "Edit Script".
  • 7. Ein Fenster, vermutlich der Texteditor, sollte sich geöffnet haben. Wenn ja, ERFOLG!

    Nun, da Sie ein Skript erstellt haben, müssen wir noch etwas in die Datei einfügen. Eine Liste aller internen Befehle, Funktionen und Variablen finden Sie in Abschnitt 5.

    Hier ein sehr einfaches Skript mit einem Hotkey, das, sobald man den Hotkey drückt, Text mithilfe des Send-Befehls schreiben kann.

    ^j::
       Send, Mein erstes Skript
    Return
    

    Später werden wir tiefer in die Materie einsteigen. Bis dahin erkläre ich Ihnen, was der obige Code macht.
    - Die erste Zeile. ^j:: ist der Hotkey. ^ symbolisiert STRG, j ist die Taste j. Alles links neben :: sind die Tasten, die Sie drücken müssen.
    - Die zweite Zeile. Send, Mein erstes Skript ist der Vorgang zum SENDEN von Tastatureingaben. SEND ist der Befehl. Alles nach dem Komma (,) wird geschrieben.
    - Die dritte Zeile. Return. Return wird Ihr bester Freund. Es STOPPT Ihr Code an dieser Stelle und ignoriert nachfolgende Zeilen. Dadurch können viele Probleme verhindert werden, besonders wenn Sie damit anfangen, eine Menge Dinge in Ihrem Skript einzufügen.


  • 8. Speichern Sie die Datei.
  • 9. Machen Sie einen Doppelklick auf die Datei bzw. auf das Symbol im Desktop, um das Skript zu starten. Öffnen Sie den Texteditor (oder wo auch immer Sie etwas schreiben können) und drücken Sie STRG und J.
  • 10. Hip Hip Hurra! Ihr erstes Skript ist fertig. Holen Sie sich ein paar Snacks als Belohnung und kommen Sie zurück, um den Rest dieses Tutorials zu lesen.

Video-Anleitung (englisch):
Install and Hello World (englisch) von Frankie

c. Befehle kann man nicht zusammenführen

Beim Erstellen Ihres Codes haben Sie vielleicht schon den Drang verspürt, mehrere Befehle auf eine Zeile oder sogar ineinander zu setzen - lassen Sie es. In Abschnitt 5 werden wir darüber sprechen, warum es nicht wie erwartet funktioniert und was Sie stattdessen tun können.

d. Sonstige grundlegende Informationen

So finden Sie die englische Hilfedatei auf Ihrem Computer:
Es gibt dafür mehrere Wege. Ich setze voraus, dass Sie das standardmäßige Installationsverzeichnis verwendet haben.

Methode 1:
  1. Finden Sie das Startmenü oder Windows-Symbol auf Ihrem Bildschirm, üblicherweise unten links.
  2. Klicken Sie auf Programme oder Alle Programme.
  3. Finden Sie AutoHotkey in der Liste.
  4. Nun müssten Sie AutoHotkey Help File sehen. Klicken Sie darauf.
  5. Fertig!
Methode 2:
  1. Schauen Sie auf Ihrem Desktop.
  2. Finden Sie Arbeitsplatz oder Computer. Öffnen Sie es.
  3. Navigieren Sie zu Ihrer Festplatte, die AutoHotkey enthält. Meistens das Laufwerk C:\.
  4. Suchen Sie in allen "Program Files"-Ordnern nach AutoHotkey.
  5. Suchen Sie nach AutoHotkey.chm oder einer Datei, die AutoHotkey heißt und ein gelbes Fragezeichen hat.
  6. Fertig!

Online-Links:
Dokumentation
Befehlsliste
Funktionen
Variablen

2 - Hotkeys & Hotstrings

Was ist ein Hotkey? Ein Hotkey ist eine Taste, die sich heiß anfühlt. ... kleiner Scherz. Ein Hotkey ist eine Taste oder Tastenkombination, die der Benutzer auf der Tastatur drücken kann, um einige Aktionen auszulösen.
Was ist ein Hotstring? Hotstrings werden hauptsächlich verwendet, um Abkürzungen bei Eingabe zu erweitern (Auto-Ersetzen); sie können auch verwendet werden, um eine geskriptete Aktion zu starten.

Hier ein Hotkey:

^j::
   Send, Mein erstes Skript
Return

Hier ein Hotstring:

::ftw::Free the whales

Der Unterschied zwischen den beiden Beispielen besteht darin, dass der Hotkey durch Drücken von STRG+J ausgelöst werden kann, während der Hotstring Ihr geschriebenes "ftw" in "Free the whales" umwandelt.

"Also, wie genau kann ein Hotkey erstellt werden?" Gute Frage. Ein Hotkey erstellt man mithilfe von zwei Doppelpunkten. Die Taste oder Tastenkombination kommt auf die linke Seite von ::. Der Inhalt muss darunter stehen, gefolgt von einem Return.

Hinweis: Es gibt Ausnahmen, aber diese neigen häufig dazu, Verwirrung zu stiften. Daher werden sie erst einmal im Tutorial nicht erwähnt.

esc::
   MsgBox Escape!!!!
Return

Ein Hotstring hat auf jeder Seite des Textes, der ersetzt werden soll, jeweils zwei Doppelpunkte. Der Text, der Ihren geschriebenen Text ersetzen soll, muss auf der rechten Seite des zweiten Doppelpunktpaares erfolgen.

Hotstrings können, wie bereits erwähnt, auch geskriptete Aktionen starten. Eine ausgefallene Bezeichnung für "tue so ziemlich alles". Das gleiche gilt für Hotkeys.

::bzw::
MsgBox Sie haben "bzw" eingegeben.
Return

Außerdem sollten Sie wissen, dass jeder Hotkey, Hotstring, Label und andere Dinge, über die wir noch nicht geredet haben, viele Codezeilen enthalten kann.

^j::
   MsgBox Wow!
   MsgBox Das sind
   Run, Notepad.exe
   winactivate, Unbenannt - Editor
   WinWaitActive, Unbenannt - Editor
   send, 7 Zeilen{!}{enter}
   sendinput, innerhalb des STRG{+}J-Hotkeys
Return

a. Tasten und ihre mysteriösen Symbole

Sie fragen sich vielleicht: "Woher soll ich denn wissen, dass das Zirkumflex (^) die STRG-Taste symbolisiert?!". Nun, gute Frage. Wenn Sie erfahren möchten, was ^ und andere Symbole bedeuten, sollten Sie einen Blick auf diese Tabelle werfen:
SymbolBeschreibung
#WIN-Taste (Windows-Logo-Taste)
!ALT-Taste
^STRG-Taste
+UMSCHALT-Taste
& Mit einem Und-Zeichen können zwei beliebige Tasten oder Maustasten zu einem benutzerdefinierten Hotkey kombiniert werden.

(Die vollständige Liste der Symbole finden Sie auf der Hotkey-Seite)

Desweiteren finden Sie hier eine Liste von allen / der meisten Hotkey-Namen, die auf der linken Seite des Doppelpunktpaares verwendet werden können:
KeyList.htm

Mithilfe von & kann eine benutzerdefinierte Kombination aus zwei (und nur zwei) Tasten (außer Joystick-Tasten) definiert werden. Im folgenden Beispiel kann der Hotkey nur ausgelöst werden, wenn Sie Numpad0 gedrückt halten und dann die zweite Taste drücken:

Numpad0 & Numpad1::
   MsgBox, Sie haben Numpad1 gedrückt`, während Sie Numpad0 gedrückt hielten.
Return

Numpad0 & Numpad2::
	Run Notepad
Return

Sie fragen sich bestimmt jetzt, ob Hotstrings auch irgendwelche coole Modifikatoren haben. Ja, das haben sie!
Hotstring-Modifikatoren werden in dem ersten Doppelpunktpaar eingefügt. Zum Beispiel:

:*:ftw::Free the whales

Weitere Hotkey- und Hotstring-Modifikatoren, Informationen und Beispiele finden Sie unter:
Hotkeys
Hotstrings

b. Fenster-spezifische Hotkeys/Hotstrings

Manchmal möchten Sie vielleicht, dass ein Hotkey oder Hotstring nur in einem bestimmten Fenster funktioniert (oder deaktiviert ist). Um dies zu tun, müssen Sie auf Befehle zurückgreifen, die ein #-Zeichen davor haben.

#IfWinActive
#IfWinExist

Diese speziellen Befehle (auch "Direktiven" genannt) erstellen kontextabhängige Hotkeys und Hotstrings. Geben Sie einfach einen Fenstertitel an. In einigen Fällen kann es jedoch sinnvoll sein, ein HWND, eine Gruppe oder eine Klasse anzugeben. Diese Dinge erfordern fortgeschrittenes Wissen und werden auf der folgenden Seite ausführlicher behandelt: #IfWinActive.

#IfWinActive Unbenannt - Editor
#space::
   MsgBox Sie haben WIN+LEERTASTE im Texteditor gedrückt.
Return
#IfWinActive

Um die Kontextabhängigkeit auszuschalten, gibt man einen beliebigen #IfWin-Befehl an und lässt seine Parameter weg. Zum Beispiel:

; Texteditor
#IfWinActive unbenannt - Editor
!q::
   MsgBox, Sie haben ALT+Q im Texteditor gedrückt.
Return
#IfWinActive

; Jedes andere Fenster, das nicht "Unbenannt - Editor" ist
!q::
   MsgBox, Sie haben ALT+Q in einem beliebigen Fenster gedrückt.
Return

Wenn alle #IfWin-Befehle ausgeschaltet sind (oder nie in einem Skript verwendet werden), können Hotkeys und Hotstrings in allen Fenstern ausgelöst werden.


Die #IfWin-Befehle sind von der Position abhängig: sie beeinflussen nur Hotkeys und Hotstrings, die sich im Skript physisch darunter befinden.

; Texteditor
#IfWinActive ahk_class Notepad
#space::
   MsgBox, Sie haben WIN+LEERTASTE im Texteditor gedrückt.
Return
::msg::Sie haben msg in den Texteditor geschrieben
#IfWinActive

; MSPaint
#IfWinActive unbenannt - Paint
#space::
   MsgBox, Sie haben WIN+LEERTASTE in MSPaint gedrückt!
Return
::msg::Sie haben msg in MSPaint eingegeben!
#IfWinActive

Weitere Informationen und ähnliche Befehle finden Sie unter:
#IfWinActive

c. Mehrere Hotkeys/Hotstrings pro Datei

Aus irgendeinem Grund bereitet dies bei einigen Leuten Kopfzerbrechen. Also werde ich es klarstellen: AutoHotkey bietet Ihnen die Möglichkeit, so viele Hotkeys und Hotstrings in einer Datei zu haben, wie Sie wollen. Ob es nun 1 oder 3253 sind (oder mehr).

#i::
   run, http://www.google.com/
Return

^p::
   run, notepad.exe
Return

~j::
   send, ack
Return

:*:acheiv::achiev
::achievment::achievement
::acquaintence::acquaintance
:*:adquir::acquir
::aquisition::acquisition
:*:agravat::aggravat
:*:allign::align
::ameria::America

Der obige Code ist durchaus akzeptabel. Mehrere Hotkeys, mehrere Hotstrings. Alle in einer großen glücklichen Skript-Datei.

d. Beispiele

::bzw::beziehungsweise                          ; Ersetzt "bzw" mit "beziehungsweise", sobald Sie ein Endungszeichen drücken.
:*:bzw::beziehungsweise                         ; Ersetzt "bzw" mit "beziehungsweise", ohne dass ein Endungszeichen notwendig ist.

^n::                                       ; STRG+N-Hotkey
   run, notepad.exe                        ; Startet das Programm notepad.exe, sobald Sie STRG+N drücken.
Return                                     ; Dies endet den Hotkey. Der Code darunter wird nicht ausgelöst.

^b::                                       ; STRG+B-Hotkey
   send, {ctrl down}c{ctrl up}             ; Kopiert den markierten Text. ^c könnte man auch verwenden, allerdings ist diese Methode sicherer.
   SendInput, [b]{ctrl down}v{ctrl up}[/b] ; Umschließt den markierten Text mit BBCode-Bold-Tags (Forum).
Return                                     ; Dies endet den Hotkey. Der Code darunter wird nicht ausgelöst.

3 - Senden von Tastatureingaben

Sie haben sich also entschieden, Tasten in einem Programm auszulösen bzw. zu schreiben. Das können wir machen. Verwenden Sie den Send-Befehl. Dieser Befehl sendet Tastatureingaben, um das Schreiben oder Drücken von Tasten zu simulieren.

Bevor wir uns den Dingen zuwenden, sollten Sie folgende Probleme in Erfahrung bringen, auf die einige Leute häufig stoßen:
So wie Hotkeys auch, hat Send spezielle Tasten. Sehr, sehr viele davon.
Hier die 4 bekanntesten Symbole:


!: Sendet die ALT-Taste. Zum Beispiel würde Send Das ist ein Text!a die Tasten "Das ist ein Text" senden und dann ALT+A drücken. Hinweis: !A hat in einigen Programmen einen anderen Effekt als !a. Das liegt daran, dass !A die Tastenkombination ALT+UMSCHALT+A und !a die Tastenkombination ALT+A drücken würde. Im Zweifelsfall sollte man immer Kleinbuchstaben verwenden.

+: Sendet die UMSCHALT-Taste. Zum Beispiel würde Send +abC den Text "AbC" senden, und Send !+a würde ALT+UMSCHALT+A drücken.

^: Sendet die STRG-Taste. Zum Beispiel würde Send ^!a die Tastenkombination STRG+ALT+A drücken, und Send ^{Home} würde STRG+POS1 senden. Hinweis: ^A hat in einigen Programmen einen anderen Effekt als ^a. Das liegt daran, dass ^A die Tastenkombination STRG+UMSCHALT+A und ^a die Tastenkombination STRG+A drücken würde. Im Zweifelsfall sollte man immer Kleinbuchstaben verwenden.

#: Sendet die WIN-Taste (die Taste mit dem Windows-Logo), demzufolge würde Send #e die WIN-Taste gedrückt halten und dann den Buchstaben "e" drücken.

Die nächsten Absätze beziehen sich auf die Tabelle der Send-Seite.

Hinweis:
Diese Tabelle gilt nicht für Hotkeys. Das heißt, dass Sie CTRL oder ENTER (oder jede andere Taste) nicht mit geschweiften Klammern umschließen sollen, während Sie ein Hotkey erstellen.


Das folgende Beispiel zeigt, was man mit einem Hotkey nicht machen sollte:
; Beim Erstellen eines Hotkeys...
; FALSCH
{LCtrl}::
   send, AutoHotkey
Return

; RICHTIG
LCtrl::
   send, AutoHotkey
Return

Die gigantische Tabelle oben zeigt so ziemlich jede spezielle Taste, die in AHK integriert ist. Zum Beispiel: {enter} und {space}.
Viele Leute denken, dass die geschweiften Klammern in den Dokumentationen nur zum Spaß gesetzt sind. Aber tatsächlich sind sie notwendig. Nur so kann AHK wissen, dass z. B. {!} als "Ausrufezeichen" und nicht als "drücke die ALT-Taste" interpretiert werden soll. Vergessen Sie nicht, dass Sie sich die Tabelle auf der Send-Seite anschauen können, um zu überprüfen, ob alle Klammern richtig gesetzt sind.

; Sind Ihnen die geschweiften Klammern um das Zeichen herum aufgefallen? Wenn sie nicht da wären, würde AHK
; die ALT-Taste drücken.
send, Dieser Text wurde geschrieben{!}
; Das gleiche wie oben, aber mit der ENTER-Taste. AHK würde "enter" schreiben, wenn ...
; ... es nicht mit geschweiften Klammern umschlossen wäre.
send, Mehrere enter Zeilen wurden enter gesendet. ; FALSCH
send, Mehrere{enter}Zeilen wurden{enter}gesendet. ; RICHTIG
Viele Leute denken auch, dass jedes einzelne Zeichen in geschweiften Klammern gesetzt werden muss. Das ist FALSCH. Wenn das Zeichen nicht in der Tabelle angegeben ist, muss es nicht in Klammern gesetzt werden. Normale Buchstaben, Zahlen oder sogar einige Symbole (wie z. B. der Punkt) müssen nicht von geschweiften Klammern umschlossen sein.
Außerdem können Sie pro Send-Befehl mehr als 1 Buchstabe, Zahl oder Symbol senden. Send-Befehle mit je 1 Buchstabe sind unnötig.
; Umschließen Sie nur Wörter oder einzelne Buchstaben, die in der oben erwähnten Tabelle vorkommen.
send, {a}       ; FALSCH
send, {b}       ; FALSCH
send, {c}       ; FALSCH
send, {a}{b}{c} ; FALSCH
send, {abc}     ; FALSCH
send, abc       ; RICHTIG
Um eine Taste gedrückt zu halten oder loszulassen, umschließt man den Tastennamen mit geschweiften Klammern und fügt das Wort UP oder DOWN ein.
; Hier wird gezeigt, wie Sie eine Taste gedrückt halten und eine weitere Taste (oder mehrere) drücken.
; Sollte eine Methode nicht funktionieren, können Sie eine andere ausprobieren.
send, ^s                     ; Beide Zeilen senden STRG+S
send, {ctrl down}s{ctrl up}  ; Beide Zeilen senden STRG+S
Send, {ctrl down}c{ctrl up}
Send, {b down}{b up}
Send, {TAB down}{TAB up}
Send, {Up down}  ; Drückt die NACH-OBEN-Taste nach unten.
Sleep, 1000      ; Hält sie eine Sekunde lang gedrückt.
Send, {Up up}    ; Lässt die NACH-OBEN-Taste los.
Aber nun fragen Sie sich vielleicht "Wie kann ich meine wirklich langen Send-Befehle besser lesbar machen?". Einfach. Benutzen Sie einen so genannten Fortsetzungsbereich. Schreiben Sie einfach auf einer neuen Zeile eine runde Startklammer, dann Ihren Inhalt, und zum Schluss eine runde Endklammer. Weitere Informationen finden Sie unter Fortsetzungsbereiche.
send,
(
Zeile 1
Zeile 2
Äpfel sind Früchte.
)

Hinweis: Es gibt verschiedene Formen von Send. Jede hat ihre eigenen Besonderheiten. Wenn eine Form von Send nicht wie gewollt funktioniert, können Sie einen anderen Typ von Send ausprobieren. Ersetzen Sie einfach den Befehlsnamen "Send" mit "SendPlay" oder was auch immer Sie möchten.
Hier die üblichen Wege zum Senden von Text:
Send
SendRaw
SendInput
SendPlay
SendEvent
Um mehr über die verschiedenen Methoden zu erfahren, siehe hier.

a. Spiele

Das ist wichtig!
Viele Spiele, vorallem die modernen, haben Software zur Abwehr von Cheats. Dinge wie GameGuard, Hackshield, PunkBuster und einige andere. Bei einigen Spielen mit Cheat-Abwehr werden Sie feststellen, dass Ihre Hotkeys, Hotstrings und Send-Befehle nicht funktionieren werden.
Das Umgehen solcher Systeme verletzt die Richtlinien des Spiels und kann dazu führen, dass Sie gebannt werden. Außerdem ist es ziemlich schwierig, solche Systeme zu umgehen. Es gibt Methoden, um die Erfolgschance in einigen Spielen zu erhöhen, aber es gibt keinen magischen "Funktioniere sofort!!!" Button. Probieren Sie also JEDE Methode aus, bevor Sie aufgeben.

Es gibt auch bekannte Probleme mit DirectX. Wenn Sie Probleme haben und wissen, dass das Spiel DirectX verwendet, können Sie folgende Dinge ausprobieren. Wenn möglich, sollten Sie das Spiel auch im Fenstermodus starten. Dies behebt einige DirectX-Probleme.
Weitere DirectX-Probleme können auftreten, wenn Pixel- oder Image-Befehle verwendet werden. Farben werden als schwarz (0x000000) erkannt, egal welche Farbe Sie versuchen abzurufen. Das ist eine weitere knifflige Sache, die es zu beheben gilt. Versuchen Sie das Spiel im Fenstermodus auszuführen, sofern möglich.

Es gibt keine einheitliche Lösung, um AutoHotkey für alle Programme lauffähig zu machen. Wenn alles, was Sie versuchen, fehlschlägt, ist AutoHotkey eventuell für Ihre Anforderung nicht geeignet.


Aus der FAQ-Seite:
Einige Spiele verwenden ausschließlich DirectInput. Der Nebeneffekt davon ist, dass sie möglicherweise alle künstlichen Tastatureingaben und Mausklicks ignorieren. Um das zu umgehen, können folgende Möglichkeiten ausprobiert werden:
  • Verwenden Sie SendPlay via: 1) SendPlay-Befehl; 2) SendMode Play; und/oder 3) Hotstring-Option SP.
  • Erhöhen Sie SetKeyDelay. Zum Beispiel:
  • SetKeyDelay, 0, 50
  • SetKeyDelay, 150, 150, Play
  • Versuchen Sie ControlSend, das dort funktionieren könnte, wo andere Sendemethoden versagen.

4 - Öffnen von Programmen & Webseiten

Um ein Programm wie Mspaint.exe, Calc.exe, script.ahk oder sogar einen Ordner zu starten, verwendet man den Run-Befehl. Mit diesen Befehl kann man auch URLs wie https://autohotkey.com/ öffnen. Wenn Ihr Computer Ihren gewünschten Typ eines Programms starten kann, ist das sehr einfach:
; Startet ein Programm. Hinweis: Die meisten Programme benötigen einen VOLLSTÄNDIGEN Dateipfad.
Run, %A_ProgramFiles%\Beliebiges_Programm\Programm.exe

; Öffnet eine Webseite
Run, https://autohotkey.com
Es gibt noch ein paar weitere Features, wie z. B. Befehlszeilenparameter und CLSID.
Wenn Sie mehr darüber erfahren wollen, besuchen Sie die Run-Seite.
Hier ein paar weitere Beispiele:
; Einige Programme benötigen keinen vollständigen Pfad, wie z. B. die Standardprogramme von Windows.
Run, Notepad.exe
Run, MsPaint.exe

; Öffnet den Ordner "Eigene Dokumente" mithilfe der internen AHK-Variable
Run, %A_MyDocuments%

; Öffnet einige Webseiten
Run, https://autohotkey.com
Run, http://www.google.com

Weiterführende Informationen und Beispiele finden Sie unter:
commands/Run.htm.

5 - Befehle vs. Funktionen()

AutoHotkey hat zwei Typen von Dingen, die der Scripter zum Erstellen des Codes verwenden kann:
Befehle und Funktionen()

Hilfreiche Links:
Eine Liste aller Befehle: commands/index.htm
Eine Liste aller internen Funktionen: Functions.htm#BuiltIn

Befehle

Ein Befehl können Sie anhand seiner Syntax (Schreibweise) erkennen. Im Gegensatz zu Funktionen werden die Parameter von Befehlen nicht in runden Klammern gesetzt. Ein Befehl würde also wie folgt aussehen:
Befehl, Parameter1, Parameter2, Parameter3

Es ist nicht möglich, mehrere Befehle auf einer Zeile zu setzen (Ausnahme: ifEqual).
Sie können keine Befehle in den Parametern anderer Befehle setzen.

Msgbox, Hello Run, Notepad.exe   ; Falsch
Msgbox, Hello, Run, Notepad.exe  ; Falsch

Msgbox, Hello      ; Richtig
Run, Notepad.exe
Befehle unterscheiden sich von Funktionen auch dadurch, dass sie eine "traditionelle Syntax" verwenden. Das bedeutet: Wenn Sie eine Variable verwenden, MÜSSEN Sie ihren Namen mit Prozentzeichen umschließen. %Variable%. Text und Zahlen müssen nicht in "Anführungszeichen" gesetzt werden. Das ist ein Text. Außerdem können Sie im Gegensatz zu Funktionen in den Parametern keine Berechnungen durchführen.

Allerdings gibt es die Möglichkeit, mit einem einzelnen % einen Ausdruck zu erzwingen, um trotzdem Berechnungen in Parametern durchführen zu können.

Funktionen

Wie bereits erwähnt sind Funktionen anders aufgebaut, weil sie runde Klammern verwenden. Eine typische Funktion sieht wie folgt aus:
Funktion(Parameter1, Parameter2, Parameter3)

Die Hauptunterschiede der Funktionen sind:
  1. Sie können Berechnungen in ihnen durchführen.
    -- SubStr(37*12, 1, 2)
    -- SubStr(A_Hour-12, 2)
  2. Variablen müssen nicht in Prozentzeichen gesetzt werden.
    -- SubStr(A_Now, 7, 2)
  3. Funktionen können innerhalb von anderen Funktionen erfolgen.
    -- SubStr(A_AHKPath, inStr(A_AHKPath, "AutoHotkey"))
  4. Text muss in Anführungszeichen gesetzt werden.
    -- SubStr("Ich programmiere, genial!", 16)
Die Art und Weise, wie Funktionen einen Wert zurückgeben, unterscheidet sich von Befehlen. Befehle benötigen den AusgabeVar-Parameter, Funktionen nicht. Die gängigste Methode, den Wert einer Funktion in eine Variable zu speichern, sieht wie folgt aus:
MeineVariable:=Funktion(Parameter)
MeineVariable:=SubStr("Ich programmiere, genial!", 16)

Dies ist nicht der einzige Weg, aber der häufigste. Man speichert den Wert der Funktion (in diesem Fall SubStr(...)) in MeineVariable, das auf der rechten Seite von := erfolgt.
Mehr zu Funktionen

Kurz gesagt:
; Das sind Befehle
Msgbox, Dies ist etwas Text.
StringReplace, Ausgabe, Eingabe, AutoHotKey, AutoHotkey, ALL
SendInput, Das ist genial{!}{!}{!}

; Das sind Funktionen
SubStr("Ich programmiere, genial!", 16)
FileExist(VariableMitPfad)
Output:=SubStr("Ich programmiere, genial!", 16)

a. Code-Blöcke

Code-Blöcke sind kleine geschweifte Klammern ({ und }), die einen Abschnitt des Codes gruppieren. Nur so kann AutoHotkey wissen, dass die gruppierten Codezeilen zu einer großen Familie gehören, die zusammenbleiben müssen. Code-Blöcke werden häufig in Verbindung mit If und Loop eingesetzt. Lässt man die Klammern weg, wird nur die erste Zeile des Blocks aufgerufen.

Im folgenden Code werden die beiden Zeilen nur ausgeführt, wenn Var gleich 5 ist.
if (var=5)
{
   MsgBox, Var ist gleich %var%!!
   Exitapp
}

Im folgenden Code wird das Mitteilungsfenster nur angezeigt, wenn Var gleich 5 ist. Das Skript wird immer beendet, selbst wenn Var nicht 5 ist.
if (var=5)
   MsgBox, Var ist gleich %var%!!
   Exitapp

Diese Vorgehensweise ist völlig in Ordnung, da dem If nur eine Codezeile zugeordnet ist. Es ist genau das gleiche wie oben, allerdings habe ich die zweite Zeile nicht eingerückt, um zu zeigen, dass sie nicht dem if gehört.
if (var=5)
   MsgBox, Var ist gleich %var%!!
MsgBox, Wir sind nun 'außerhalb' von if. Geschweifte Klammern waren nicht notwendig, weil nur eine Zeile dazugehört.

6 - Variablen

Variablen sind quasi kleine Klebezettel, die wichtige Informationen enthalten. Sie können verwendet werden, um Text, Zahlen, Daten von Funktionen/Befehlen oder mathematischen Gleichungen zu speichern. Ohne sie wäre das Programmieren & Scripting sehr viel anstrengender.


Es gibt mehrere Wege, wie man einer Variable etwas zuweisen kann; allerdings befassen wir uns nur mit den bekanntesten Formen. Bitte achten Sie auf das Gleichheitszeichen (=).
  1. variable=text
    Dies ist die einfachste Form für eine Variable - die traditionelle Zuweisung. Einfach Text eingeben und fertig.
  2. variable=%variable2%
    Das gleiche wie oben, außer dass Sie den Wert einer Variable einer anderen Variable zuweisen.
  3. variable:="text"
    Dies ist eine Ausdruckszuweisung, wegen dem : vor dem =. Jeder Text muss in "Anführungszeichen" gesetzt werden.
  4. variable:=variable2
    Im Ausdrucksmodus brauchen Variablen keine Prozentzeichen.
  5. variable:=6+8/3*2-sqrt(9)
    Dank des Ausdrucks können Sie Berechnungen durchführen!
Nummer 1 & 2 können kombiniert werden. var=%var2% etwas Text %var3%.
3, 4 & 5 können auch kombiniert werden. var:="Das Ergebnis von 5+ " Variable " ist: " 5+Variable

Jedes Gleichheitszeichen (=) mit vorangestelltem Symbol wird als Zuweisungsoperator bezeichnet und ist immer ein Ausdruck. Das heißt also, dass := += -= .= usw. immer Ausdrücke verwenden.

a. Wann und wo Prozentzeichen verwendet werden

Viele haben Probleme damit zu erkennen, wann und wo sie die Variablen mit Prozentzeichen (%) umschließen sollen. Ich hoffe, dass die folgende Übersicht Unklarheiten beseitigen kann.

Wann und wo %'s verwendet werden:
  1. Bei Befehlen (siehe oben).
    -- Außer wenn der Parameter AusgabeVar oder EingabeVar ist.
  2. Beim Speichern eines Wertes in eine Variable via traditionellem Modus (ein Gleichheitszeichen ohne Symbol davor).
Wann und wo %'s nicht verwendet werden:
  1. In Parametern, die Eingabe- oder Ausgabevariablen sind, zum Beispiel: StringLen, OutputVar, InputVar
  2. Auf der linken Seite einer Zuweisung: Var = 123abc
  3. Auf der linken Seite von traditionellen (Nicht-Ausdrucks-) if-Anweisungen: If Var1 < %Var2%
  4. Überall in Ausdrücken. Zum Beispiel:
    If (Var1 != Var2)
       Var1 := Var2 + 100
    

b. Abrufen von Benutzereingaben

Manchmal ist es notwendig, Informationen eines Benutzers einzufordern. Es gibt mehrere Möglichkeiten, dies zu tun, aber der einfachste Weg ist die InputBox. Hier ein einfaches Beispiel, wie man dem Benutzer ein paar Fragen stellen kann und die eingegebenen Dinge verarbeitet.
InputBox, AusgabeVar, Frage 1, Wie heißen Sie mit Vornamen?
if (AusgabeVar="Bill")
   MsgBox, Sie haben einen tollen Namen`, %AusgabeVar%.

InputBox, AusgabeVar2, Frage 2, Mögen Sie AutoHotkey?
if (AusgabeVar2="ja")
   MsgBox, Danke`, dass Sie mit %AusgabeVar2% geantwortet haben`, %AusgabeVar%! Wir werden gute Freunde.
else
   MsgBox, %AusgabeVar%`, das macht mich traurig.

c. Weitere Beispiele

MsgBox, 4, , Möchten Sie fortfahren?
IfMsgBox, No
    Return                ; Bei Nein wird der Code genau hier gestoppt.
MsgBox Sie haben JA gedrückt.  ; Ansonsten hat der Benutzer Ja ausgewählt.
; Einige Beispiele, die zeigen, wo Prozentzeichen möglich sind und wo nicht
Variable=text                      ; Speichert etwas Text in eine Variable via traditioneller Zuweisung.
VariableZahl:=6                  ; Speichert eine Zahl in eine Variable via Ausdruckszuweisung.
Variable2=%Variable%               ; Speichert eine Variable in eine andere Variable via traditioneller Zuweisung.
Variable3:=Variable                ; Speichert eine Variable in eine andere Variable via Ausdruckszuweisung.
Variable4.=Variable                ; Fügt eine Variable an das Ende einer anderen Variable an, via Ausdruckszuweisung.
Variable5+=VariableZahl          ; Addiert den Wert einer Variable mit einer anderen Variable via Ausdruckszuweisung.
Variable5-=VariableZahl          ; Subtrahiert den Wert einer Variable mit einer anderen Variable via Ausdruckszuweisung.
Variable6:=SubStr(Variable, 2, 2)  ; Variable innerhalb einer Funktion. Dies ist immer ein Ausdruck.
Variable7=%Variable% Text          ; Speichert eine Variable plus etwas Text in eine andere Variable via traditioneller Zuweisung.
Variable8:=Variable " Text"        ; Speichert eine Variable plus etwas Text in eine andere Variable via Ausdruckszuweisung.
MsgBox, %Variable%                 ; Variable innerhalb eines Befehls. 
StringSplit, Variable, Variable, x ; Variable innerhalb eines Befehls, der EingabeVar und AusgabeVar verwendet.
if (VariableZahl=6)              ; Immer wenn ein IF runde Klammern hat, wird es ein Ausdruck sein. Also keine %'s.
If (Variable != VariableZahl)    ; Immer wenn ein IF runde Klammern hat, wird es ein Ausdruck sein. Also keine %'s.
if VariableZahl=6                ; Ohne runde Klammern ist das if traditionell. Allerdings benötigen nur die Variablen auf der 'rechten Seite' %'s. 
If Var1 < %Var2%                   ; Ohne runde Klammern ist das if traditionell. Allerdings benötigen nur die Variablen auf der 'rechten Seite' %'s. 

7 - Objekte

Objekte sind eine Möglichkeit, Ihre Daten auf eine effizientere Weise zu organisieren. Manchmal werden Objekte auch als Arrays bezeichnet. Beachten Sie aber, dass alle Arrays eigentlich nur Objekte sind. Wir geben den Objekten je nach Verwendungszweck unterschiedliche Namen, aber in der Regel sind alle Objekte gleich.


Ein Objekt ist im Grunde genommen eine Sammlung von Variablen. Die Variablennamen werden als "Keys" bezeichnet und der Inhalt der Variablen ist "Values".

Wenn Sie Leute hören, die ein Objekt als Array oder indiziertes Array bezeichnen, bedeutet das in der Regel, dass alle Keys fortlaufende Nummern sind, beginnend bei 1.
Wenn Sie Leute hören, die ein Objekt als assoziatives Array bezeichnen, bedeutet das, dass die Keys entweder Zeichenketten (Text) oder nicht-fortlaufende Nummern sind. Manchmal ist es auch eine Mischung aus beidem, einschließlich fortlaufende Nummern!

Es gibt keine Einschränkungen, was ein Key oder Value sein kann - sie können sogar andere Arrays sein!
Ein Array, das Arrays enthält, wird als Mehrdimensionales Array bezeichnet, aber dazu später mehr.
Es gibt eine Reihe von Gründen, warum ein Objekt nützlich sein kann. Einige Beispiele:
  1. Sie wollen eine nummerierte Liste von Dingen, z. B. eine Einkaufsliste (dies wäre ein indiziertes Array)
  2. Sie möchten etwas gitterförmig darstellen, z. B. für ein Brettspiel (dies würde mit mehrdimensionalen Objekten erfolgen)
  3. Sie haben eine Liste von Dingen, in der jedes Ding eine Bezeichnung hat, wie z. B. die Merkmale einer Frucht (dies wäre ein assoziatives Array)

a. Erstellen von Objekten

Es gibt mehrere Möglichkeiten, ein Objekt zu erstellen, die gängigsten davon sind unten aufgelistet
  1. MeinObjekt := ["eins", "zwei", "drei", 17]
    Syntax mit eckigen Klammern. Auch bekannt als "indiziertes Array". Ein indiziertes Array ist ein Objekt, das eine Liste von Elementen mit der Nummerierung 1 und höher repräsentiert. In diesem Beispiel wird der Wert "eins" in den Objekt-Key 1 (aka Index 1) und der Wert 17 in den Objekt-Key 4 (aka Index 4) gespeichert.
  2. Banane := {"Form": "Länglich", "Farbe": "Gelb", "Geschmack": "Köstlich", "Preis": 3}
    Syntax mit geschweiften Klammern. Auch bekannt als "assoziatives Array". Ein assoziatives Array ist eine Sammlung von Daten, wo jedes Element einen Namen hat. In diesem Beispiel wird der Wert "Gelb" in den Objekt-Key "Farbe" gespeichert. Außerdem wird der Wert 3 in den Objekt-Key "Preis" gespeichert.
  3. MeinObjekt := Array("eins", "zwei", "drei", 17)
    Die Funktion zum Erstellen eines Arrays. Identisch zur Syntax mit eckigen Klammern, aber in einer Funktion verpackt.
  4. Banane := Object("Form", "Länglich", "Farbe", "Gelb", "Geschmack", "Köstlich", "Preis", 3)
    Die Funktion zum Erstellen eines Objekts. Identisch zur Syntax mit geschweiften Klammern, aber in einer Funktion verpackt.
Vergessen Sie nicht, dass all diese Definitionen das gleiche erstellen (Objekte), nur mit unterschiedlichen Keys.

b. Verwenden von Objekten

Objekte können vielfältig eingesetzt werden. Sie können Werte abrufen, Werte setzen, neue Werte hinzufügen und so weiter.

Setzen von Werten:
Das Setzen von Werten in einem Objekt ist so einfach wie das Setzen des Wertes einer Variable.
Sie müssen lediglich die Klammer- oder Punktschreibweise (wie im Abschnitt zum Abrufen eines Wertes gezeigt) auf die linke Seite eines Ausdruckszuweisungssymbols := setzen.

Zum Beispiel:
Banane.Konsistenz := "Matschig"
Banane["Verfault"] := True ; Diese Banane ist verfault. Bäh.

Abrufen von Werten:
  1. Wert := Banane["Farbe"]
    Klammerschreibweise. Mit dieser Schreibweise ist es möglich, ein Ausdruck als Key zu verwenden, um an den Wert Ihres Objekts zu kommen. In diesem Fall habe ich den einfachen Ausdruck "Farbe" verwendet, das (wenig überraschend) der Key Farbe ist. Es wird ein Mitteilungsfenster mit dem Wort "Gelb" angezeigt, weil wir im vorherigen Abschnitt den Key Farbe auf "Gelb" gesetzt haben.
  2. Wert := Banane.Farbe
    Punktschreibweise. Diese Schreibweise lässt Sie nur direkt geschriebene Zeichenketten als Keys verwenden. In den Keys können keine Variablen angegeben werden.

Hinzufügen neuer Keys und Werte:
  1. Direktes Hinzufügen von Werten
    Um einen Wert oder Key direkt hinzuzufügen, legt man einfach einen Key an, der noch nicht existiert. Zum Beispiel:
    MeinObjekt.NeuerKey := "Glänzend"
    MeinObjekt["NeuerKey"] := 3.1415
  2. Einfügen von Werten
    Schauen Sie sich die folgenden Methoden an, wie Keys und Werte noch eingefügt werden können.

    MeinObjekt.InsertAt(Index, Wert1, Wert2, Wert3...)
    Index ist ein beliebiger Integer-Key. Diese Methode wird ALLE höheren Integer-Keys um die Anzahl der eingefügten Werte nach oben verschieben, selbst wenn Lücken vorhanden sind (fügen Sie beispielsweise zwischen den Keys 1 und 100 einen Wert in Key 50 ein, wird der Key 100 auf 101 verschoben).

    MeinObjekt.Push(Wert1, Wert2, Wert3...)
    Diese Methode bewirkt, dass die Werte an das Ende des Arrays MeinObjekt "angefügt" werden. Das heißt, dass die Werte bei dem höchsten Integer-Key plus eins eingefügt werden.

Entfernen von Keys und Werten:
  1. Leermachen des Wertes.
    Der einfachste Weg, einen Wert zu entfernen, besteht darin, ihn leer zu machen. Setzen Sie den Wert einfach auf "", auch bekannt als leere Zeichenkette. Der Key wird dadurch nicht entfernt, aber es wird die Illusion erzeugt, als wäre sein Wert noch nicht gesetzt.
    Anhand der HasKey-Methode kann man erkennen, dass der Key noch vorhanden ist. Außerdem taucht der Key weiterhin in einer For-Schleife auf. (For-Schleifen werden später erklärt)
  2. Entfernen des Keys
    Es gibt mehrere Wege, wie der Key und gleichzeitig auch sein Wert entfernt werden kann. Da gibt es:
    1. EntfernterWert := MeinObjekt.Delete(BeliebigerKey)
      Der vorherige Wert von MeinObjekt[BeliebigerKey] wird in EntfernterWert gespeichert.
    2. AnzahlEntfernterKeys := MeinObjekt.Delete(ErsterKey, LetzterKey)
      Mit dieser Methode kann ein Bereich von Integer- (nummerierten) oder Zeichenketten-Keys zwischen ErsterKey und LetzterKey entfernt werden.

      Der zurückgegebene Wert ist die Anzahl der Keys, die entfernt wurden - dieser Wert ist nützlich, wenn Sie eine Lücke zwischen Ihren Keys haben (wenn Sie z. B. die Keys 1, 3 und 4 angegeben haben, wird AnzahlEntfernterKeys eine 3 sein, weil nur 3 Keys entfernt werden konnten)
    3. MeinObjekt.Pop()
      Entfernt den höchsten Integer-Key, und gibt den Wert zurück. Höhere Keys als diesen gibt es nicht.
    4. EntfernterWert := MeinObjekt.RemoveAt(Index)
      AnzahlEntfernterKeys := MeinObjekt.RemoveAt(Index, Länge)
      Diese Methode entfernt alle Keys von Index bis Index + Länge - 1. Wenn Länge fehlt, gilt standardmäßig 1. Nach dem Entfernen der Keys werden alle höheren Integer-Keys (nummerierten) nach unten verschoben, um die Lücke zu füllen, so dass der Wert bei Index + Länge, sofern vorhanden, nun bei Index sein wird. Dieser Sachverhalt entspricht der Funktionsweise der InsertAt-Methode mit mehreren angegebenen Werten.

8 - Andere hilfreiche Goodies

Wir haben das Ende unserer Reise erreicht, werter Freund. Ich hoffe, Sie haben etwas gelernt. Aber bevor wir gehen, zeige ich Ihnen noch ein paar Dinge, die Sie wissen sollten. Viel Spaß!

a. Die mysteriösen eckigen Klammern

Auf fast allen Seiten sind zwei Symbole ([ und ]) zu sehen, die innerhalb der gelben Syntax-Box etwas Bestimmtes umschließen. Alles, was sich innerhalb dieser eckigen Klammern befindet, ist OPTIONAL. Das bedeutet, dass Sie das Zeug darin weglassen können, wenn Sie es nicht benötigen. Beim Schreiben Ihres Codes ist es sehr wichtig, NICHT die eckigen Klammern in Ihrem Code zu verwenden.

Auf der ControlGetText-Seite können Sie folgendes sehen (ohne Farben):
ControlGetText, AusgabeVar [, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme]

Also könnten Sie folgendes tun:
ControlGetText, AusgabeVar

Oder weitere Details einfügen:
ControlGetText, AusgabeVar, Steuerelement, Fenstertitel

Was ist zu tun, wenn Sie nur Titelausnahme angeben wollen? Einfach!
ControlGetText, AusgabeVar, Steuerelement,,, Titelausnahme

Bitte beachten Sie, dass die Parameter nicht IGNORIERT, sondern nur leer gelassen werden können.
Wenn Sie "Fenstertitel, Fenstertext" ignorieren würden, würde es wie folgt aussehen und zu Problemen führen:
ControlGetText, AusgabeVar, Steuerelement, Titelausnahme
Dies wäre gültig.
ControlGetText, AusgabeVar, Steuerelement,,, Titelausnahme

b. Herausfinden Ihrer AHK-Version

Führen Sie den folgenden Code aus, um Ihre aktuelle AHK-Version anzeigen zu lassen:
MsgBox, %A_AHKVersion%
Oder suchen Sie im Startmenü oder Installationsverzeichnis nach "AutoHotkey Help File" oder "AutoHotkey.chm".

c. Trial-and-Error-Prinzip

Trial-and-Error (Versuch und Irrtum) ist eine sehr verbreitete und effektive Möglichkeit des Lernens. Statt bei jeder Kleinigkeit nachzufragen, kann es manchmal hilfreich sein, wenn man etwas Zeit für sich alleine verbringt (manchmal Stunden oder Tage) und versucht, etwas selbst auf die Reihe zu bekommen.

Wenn Sie etwas ausprobieren und eine Fehlermeldung erhalten, sollten Sie diesen Fehler analysieren. Versuchen Sie dann, Ihren Code zu korrigieren. Führen Sie ihn nochmals aus. Wenn Sie weiterhin einen Fehler erhalten, sollte er auch korrigiert werden. Setzen Sie dieses Verfahren fort, bis Ihr Code funktioniert. Auf diese Weise lernen Sie viel, weil Sie die Dokumentation lesen, Fehler analysieren und kennenlernen, was funktioniert und was nicht. Versuchen, scheitern, versuchen, scheitern, versuchen, versuchen, versuchen, scheitern, scheitern, erfolgreich sein!

So haben viele "Profis" gelernt. Aber haben Sie keine Angst zu fragen, wir beißen nicht. Das Lernen ist ein langwieriger Prozess; Die "Profis" haben AutoHotkey auch nicht in einem Tag gemeistert.

"Wenn es beim ersten Mal nicht klappt, versuchen, versuchen Sie es erneut." - William E. Hickson

d. Einrückung

Diese Sache (Einrücken) ist sehr wichtig! Ihr Code läuft auch ohne Einrücken einwandfrei, aber es hilft Ihnen und anderen, Ihr Code zu lesen. Ein kleines Skript (25 Zeilen oder weniger) ohne eingerücktem Code kann vermutlich ohne Probleme gelesen werden, aber je größer es wird, desto unübersichtlicher wird es. Am besten lernen Sie so schnell wie möglich, wie Sie Ihr Code einrücken können.
Auf welche Weise Sie Ihren Code einrücken, spielt keine Rolle, aber achten Sie darauf, dass es gleichmäßig aussieht.
"Was ist Einrückung?", fragen Sie sich? Man entflechtet den Code einfach mit Leerräumen, um sehen zu können, was zu was gehört. Normalerweise werden 3 oder 4 Leerzeichen oder ein Tabulatorzeichen pro "Stufe" verwendet.

Ohne Einrückung:
if (Auto="alt")
{
msgbox, Das Auto ist wirklich alt.
if (Räder="platt")
{
msgbox, Das Auto ist nicht zum Fahren geeignet.
Return
}
else
{
msgbox, Seien Sie vorsichtig! Dieses alte Auto ist zu gefährlich`, um es zu fahren.
}
}
else
{
msgbox, Meine Güte`, wie Ihr neues Fahrzeug glänzt.
}
Eingerückt:
if (Auto="alt")
{
   msgbox, Das Auto ist wirklich alt.
   if (Räder="platt")
   {
      msgbox, Das Auto ist nicht zum Fahren geeignet.
      Return
   }
   else
   {
      msgbox, Seien Sie vorsichtig! Dieses alte Auto ist zu gefährlich`, um es zu fahren.
   }
}
else
{
   msgbox, Meine Güte`, wie Ihr neues Fahrzeug glänzt.
}
Wiki zeigt Ihnen verschiedene Stile und Beispiele. Entscheiden Sie selbst, was oder wie Sie einrücken wollen bzw. wie Ihr Code am einfachsten gelesen werden kann.
https://de.wikipedia.org/wiki/Einr%C3%BCckungsstil

e. Um Hilfe bitten

Zuallererst sollten Sie selbst versuchen, Nachforschungen zu betreiben oder den Code zu schreiben. Wenn Sie mit den Ergebnissen nicht zufrieden sind, können Sie die Community fragen, aber beachten Sie dabei folgende Punkte:
  • Haben Sie keine Hemmungen um Hilfe zu bitten, selbst die klügsten Menschen tun das.
  • Zeigen Sie uns Ihre Versuche, auch wenn Sie der Ansicht sind, dass sie lächerlich sind.
  • Schicken Sie uns all Ihre Versuche.
  • Tun Sie so, als wäre jeder außer Sie dumm wie Brot, der von nichts weiß. Geben Sie uns so viele Informationen wie möglich, damit wir wissen, was Sie vorhaben. Helfen Sie uns, Ihnen zu helfen.
  • Seien Sie geduldig.
  • Seien Sie höflich.
  • Seien Sie offen.
  • Seien Sie nett.
  • Haben Sie Spaß.
Erwarten Sie nicht, dass Sie sofort eine Antwort bekommen - warten Sie wenigstens 1 Tag (24 Stunden), bevor Sie nachhaken. Wir helfen gerne, aber bedenken Sie, dass wir unsere Hilfe kostenlos anbieten und unsere Freizeit dafür opfern. Wir könnten gerade arbeiten, schlafen, spielen, mit der Familie zusammen sein, oder einfach zu beschäftigt sein, um zu helfen.
Während Sie auf Hilfe warten, könnten Sie selbst versuchen, das Problem zu lösen. Es ist ein tolles Gefühl, etwas ohne Hilfe geschafft zu haben.

f. Andere Links

Häufig gestellte Fragen (FAQ)