From a0fcc505201c65aa534c6a7b65cb91854d351940 Mon Sep 17 00:00:00 2001 From: Ragnar-F <1332321+Ragnar-F@users.noreply.github.com> Date: Fri, 26 Feb 2021 21:19:34 +0100 Subject: [PATCH] control flow -> Kontrollfluss; control flow statement -> Kontrollanweisung --- AHKL_ChangeLog.htm | 2 +- AHKL_Features.htm | 2 +- Concepts.htm | 12 +++++------ Functions.htm | 2 +- Language.htm | 36 ++++++++++++++++---------------- Tutorial.htm | 2 +- commands/Block.htm | 10 ++++----- commands/DetectHiddenText.htm | 4 ++-- commands/DetectHiddenWindows.htm | 2 +- commands/Else.htm | 2 +- commands/Finally.htm | 4 ++-- commands/IfEqual.htm | 2 +- commands/IfWinActive.htm | 6 +++--- commands/IfWinExist.htm | 6 +++--- commands/SetWinDelay.htm | 2 +- commands/index.htm | 6 +++--- misc/Labels.htm | 2 +- misc/WinTitle.htm | 8 +++---- static/source/data_index.js | 2 +- static/source/data_toc.js | 2 +- static/source/data_translate.js | 2 +- 21 files changed, 58 insertions(+), 58 deletions(-) diff --git a/AHKL_ChangeLog.htm b/AHKL_ChangeLog.htm index a95d4974..2c2114b1 100644 --- a/AHKL_ChangeLog.htm +++ b/AHKL_ChangeLog.htm @@ -442,7 +442,7 @@

1.1.22.09 - 11. November 2015

1.1.22.08 - 11. November 2015

-

Behoben: Die For-Schleife wird die Ablaufsteuerung nun korrekt übergeben, wenn _NewEnum/Next eine Ausnahme auslöst.

+

Behoben: Die For-Schleife wird die Kontrolle nun korrekt übergeben, wenn _NewEnum/Next eine Ausnahme auslöst.

Behoben: Finally wird die bevorstehende Ausnahme nun hinauszuzögern, bis dessen Block ausgewertet wurde, nicht nur bis zum Aufruf der ersten internen Funktion.

Behoben: Erkennung von ungültigen Sprüngen aus Finally-Blöcken beim Laden des Skripts (fehlerhaft seit v1.1.20).

diff --git a/AHKL_Features.htm b/AHKL_Features.htm index 6dabea59..c293c22d 100644 --- a/AHKL_Features.htm +++ b/AHKL_Features.htm @@ -15,7 +15,7 @@

Dieses Dokument beschreibt Features, die in den AutoHotkey_L-Entwicklungszweig von AutoHotkey hinzugefügt wurden, der mittlerweile als "AutoHotkey 1.1" bekannt ist.

Vorsicht: Dieses Dokument wurde in den letzten Jahren vernachlässigt und könnte daher einige der neueren Änderungen nicht enthalten.

-

Ablaufsteuerung

+

Kontrollfluss

diff --git a/Concepts.htm b/Concepts.htm index 37def349..9a45726b 100644 --- a/Concepts.htm +++ b/Concepts.htm @@ -33,7 +33,7 @@

Inhaltsverzeichnis

  • Caching
  • Funktionen/Befehle
  • -
  • Ablaufsteuerung
  • +
  • Kontrollfluss
  • Details
  • -
  • Ablaufsteuerungsanweisungen +
  • Kontrollanweisungen
  • Aufbau eines Skripts
  • Break LoopLabelUnterbricht von einer inneren Schleife heraus eine äußere Schleife.
    Continue LoopLabelÜberspringt von einer inneren Schleife heraus den aktuellen Durchlauf der äußeren Schleife.
    -

    Ablaufsteuerungsanweisungen

    -

    Eine allgemeine Erläuterung zur Ablaufsteuerung finden Sie unter Ablaufsteuerung.

    -

    Um Anweisungen zu einem Block zusammenzufassen, umschließen Sie sie mit geschweiften Klammern {}, wie in C, JavaScript und anderen ähnlichen Sprachen, allerdings müssen die Klammern in der Regel am Anfang einer Zeile stehen. Ablaufsteuerungsanweisungen können auf einen ganzen Block oder nur auf eine einzelne Anweisung angewendet werden.

    -

    Der Körper einer Ablaufsteuerungsanweisung besteht immer aus einer einzigen Gruppe von Anweisungen. Ein Block zählt als eine Gruppe von Anweisungen, ebenso wie eine Ablaufsteuerungsanweisung und ihr Körper. Die folgenden verwandten Anweisungen werden ebenfalls mit ihren Körpern gruppiert: If mit Else; Loop/For mit Until; Try mit Catch und/oder Finally. Wenn also eine Gruppe dieser Anweisungen als Ganzes verwendet wird, muss sie nicht immer mit geschweiften Klammern umschlossen werden (einige Programmierstile enthalten jedoch aus Gründen der Übersichtlichkeit immer die geschweiften Klammern).

    -

    Ablaufsteuerungsanweisungen, die einen Körper haben und deshalb immer eine nachfolgende Anweisung oder eine Gruppe von Anweisungen haben müssen: If, Else, Loop, While, For, Try, Catch und Finally.

    -

    Es gibt die folgenden Ablaufsteuerungsanweisungen:

    +

    Kontrollanweisungen

    +

    Eine allgemeine Erläuterung zum Kontrollfluss finden Sie unter Kontrollfluss.

    +

    Um Anweisungen zu einem Block zusammenzufassen, umschließen Sie sie mit geschweiften Klammern {}, wie in C, JavaScript und anderen ähnlichen Sprachen, allerdings müssen die Klammern in der Regel am Anfang einer Zeile stehen. Kontrollanweisungen können auf einen ganzen Block oder nur auf eine einzelne Anweisung angewendet werden.

    +

    Der Körper einer Kontrollanweisung besteht immer aus einer einzigen Gruppe von Anweisungen. Ein Block zählt als eine Gruppe von Anweisungen, ebenso wie eine Kontrollanweisung und ihr Körper. Die folgenden verwandten Anweisungen werden ebenfalls mit ihren Körpern gruppiert: If mit Else; Loop/For mit Until; Try mit Catch und/oder Finally. Wenn also eine Gruppe dieser Anweisungen als Ganzes verwendet wird, muss sie nicht immer mit geschweiften Klammern umschlossen werden (einige Programmierstile enthalten jedoch aus Gründen der Übersichtlichkeit immer die geschweiften Klammern).

    +

    Kontrollanweisungen, die einen Körper haben und deshalb immer eine nachfolgende Anweisung oder eine Gruppe von Anweisungen haben müssen: If, Else, Loop, While, For, Try, Catch und Finally.

    +

    Es gibt die folgenden Kontrollanweisungen:

    -

    Ablaufsteuerung vs. Befehle

    -

    Ablaufsteuerungsanweisungen haben eine Syntax, die den Befehlen ähnelt, und werden oft als solche bezeichnet, aber einige unterscheiden sich von Befehlen:

    +

    Kontrollfluss vs. Befehle

    +

    Kontrollanweisungen haben eine Syntax, die den Befehlen ähnelt, und werden oft als solche bezeichnet, aber einige unterscheiden sich von Befehlen:

    If-Anweisung

    @@ -474,8 +474,8 @@

    Loop-Anweisung

    Schleifenvariablen können auch außerhalb des Schleifenkörpers verwendet werden, wie z. B. in einer Funktion oder Subroutine, die aus einer Schleife heraus aufgerufen wird.

    -

    Keine Ablaufsteuerung

    -

    Da Direktiven, Label (einschließlich Hotkeys und Hotstrings) und Deklarationen ohne Zuweisungen bereits verarbeitet werden, während das Skript aus der Datei geladen wird, unterliegen sie nicht der Ablaufsteuerung. Das heißt, dass sie bedingungslos wirksam werden, bevor das Skript überhaupt Ablaufsteuerungsanweisungen ausführt. Die #If-Direktiven wie #IfWinActive können ebenfalls die Ablaufsteuerung nicht beeinflussen; sie legen lediglich die Kriterien für die im Code angegebenen Hotkey- und Hotstring-Label fest. Die Kriterien eines Hotkeys werden jedes Mal ausgewertet, wenn er gedrückt wird, und nicht, wenn die Ausführung auf die #If-Direktive trifft.

    +

    Kein Kontrollfluss

    +

    Da Direktiven, Label (einschließlich Hotkeys und Hotstrings) und Deklarationen ohne Zuweisungen bereits verarbeitet werden, während das Skript aus der Datei geladen wird, unterliegen sie nicht dem Kontrollfluss. Das heißt, dass sie bedingungslos wirksam werden, bevor das Skript überhaupt Kontrollanweisungen ausführt. Die #If-Direktiven wie #IfWinActive haben ebenfalls keinen Einfluss auf den Kontrollfluss; sie legen lediglich die Kriterien für die im Code angegebenen Hotkey- und Hotstring-Label fest. Die Kriterien eines Hotkeys werden jedes Mal ausgewertet, wenn er gedrückt wird, und nicht, wenn die Ausführung auf die #If-Direktive trifft.

    Aufbau eines Skripts

    diff --git a/Tutorial.htm b/Tutorial.htm index ee5bc6aa..d73db028 100644 --- a/Tutorial.htm +++ b/Tutorial.htm @@ -444,7 +444,7 @@

    Funktionen

    Ausgabe := SubStr("Ich programmiere, genial!", 16)

    a. Code-Blöcke

    -

    Codeblöcke sind Codezeilen, die von kleinen geschweiften Klammern ({ und }) umschlossen sind. Sie gruppieren einen Abschnitt des Codes, um AutoHotkey mitzuteilen, dass sie eine große Familie sind, die zusammenbleiben müssen. Sie werden häufig bei Funktionen und Ablaufsteuerungsanweisungen wie If und Loop eingesetzt. Lässt man die Klammern weg, wird nur die erste Zeile des Blocks aufgerufen.

    +

    Codeblöcke sind Codezeilen, die von kleinen geschweiften Klammern ({ und }) umschlossen sind. Sie gruppieren einen Abschnitt des Codes, um AutoHotkey mitzuteilen, dass sie eine große Familie sind, die zusammenbleiben müssen. Sie werden häufig bei Funktionen und Kontrollanweisungen wie 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 MeineVar gleich 5 ist:

    if (MeineVar = 5)
     {
    diff --git a/commands/Block.htm b/commands/Block.htm
    index f12dffb5..08685612 100644
    --- a/commands/Block.htm
    +++ b/commands/Block.htm
    @@ -2,7 +2,7 @@
     
     
     {...} (Block) - Syntax & Verwendung | AutoHotkey
    -
    +
     
     
     
    @@ -12,7 +12,7 @@
     
     
     

    {...} (Block)

    -

    Blöcke sind eine oder mehr Anweisungen, die von zwei geschweiften Klammern umschlossen sind. Diese werden häufig im Zusammenhang mit Funktionsdefinitionen und Ablaufsteuerungsanweisungen verwendet.

    +

    Blöcke sind eine oder mehr Anweisungen, die von zwei geschweiften Klammern umschlossen sind. Diese werden häufig im Zusammenhang mit Funktionsdefinitionen und Kontrollanweisungen verwendet.

     {
         Anweisungen
    @@ -28,9 +28,9 @@ 

    Bemerkungen

    else return

    Obwohl Blöcke überall eingesetzt werden können, sind sie eigentlich nur relevant, wenn sie in Verbindung mit Funktionsdefinitionen, If-Anweisungen, Else, Loop-Anweisungen, Try, Catch oder Finally genutzt werden.

    -

    Wenn eine der oben genannten Ablaufsteuerungsanweisungen nur eine einzige Anweisung hat, muss diese Anweisung nicht von einem Block umschlossen sein (dies funktioniert nicht bei Funktionsdefinitionen). Es gibt jedoch Fälle, wo genau dies die Übersichtlichkeit und Wartbarkeit des Skripts erhöhen könnte.

    +

    Wenn eine der oben genannten Kontrollanweisungen nur eine einzige Anweisung hat, muss diese Anweisung nicht von einem Block umschlossen sein (dies funktioniert nicht bei Funktionsdefinitionen). Es gibt jedoch Fälle, wo genau dies die Übersichtlichkeit und Wartbarkeit des Skripts erhöhen könnte.

    Ein Block kann leer sein (muss keine Anweisungen enthalten); das heißt, dass zum Beispiel der Inhalt eines Blocks auskommentiert werden kann, ohne den Block selbst entfernen zu müssen.

    -

    One True Brace (OTB, K&R-Stil): Der OTB-Style kann optional an folgenden Stellen angewendet werden: Funktionsdefinitionen, If (Ausdruck), Else, Loop Anzahl, While, For, Try, Catch und Finally. Dieser Style kann genutzt werden, um die geschweifte Startklammer des Blocks direkt neben der Ablaufsteuerungsanweisung zu setzen, statt sie wie sonst einzeln darunter zu setzen. Zum Beispiel:

    +

    One True Brace (OTB, K&R-Stil): Der OTB-Style kann optional an folgenden Stellen angewendet werden: Funktionsdefinitionen, If (Ausdruck), Else, Loop Anzahl, While, For, Try, Catch und Finally. Dieser Style kann genutzt werden, um die geschweifte Startklammer des Blocks direkt neben der Kontrollanweisung zu setzen, statt sie wie sonst einzeln darunter zu setzen. Zum Beispiel:

    MeineFunktion(x, y) {
         ...
     }
    @@ -62,7 +62,7 @@ 

    Bemerkungen

    } MsgBox Diese Zeile befindet sich auf der rechten Seite der geschweiften Endklammer. Sie wird bedingungslos ausgeführt.
    -

    Funktionsdefinitionen, Ablaufsteuerungsanweisungen, If-Anweisungen, Else, Loop-Anweisungen, Try, Catch, Finally

    +

    Funktionsdefinitionen, Kontrollanweisungen, If-Anweisungen, Else, Loop-Anweisungen, Try, Catch, Finally

    Beispiele

    diff --git a/commands/DetectHiddenText.htm b/commands/DetectHiddenText.htm index 9130c3ea..21d3a245 100644 --- a/commands/DetectHiddenText.htm +++ b/commands/DetectHiddenText.htm @@ -13,7 +13,7 @@

    DetectHiddenText

    -

    Legt fest, ob unsichtbare Texte in einem Fenster "gesehen" werden können, um das Fenster zu finden. Dies beeinflusst Befehle, interne Funktionen und Ablaufsteuerungsanweisungen wie WinExist() und WinActivate.

    +

    Legt fest, ob unsichtbare Texte in einem Fenster "gesehen" werden können, um das Fenster zu finden. Dies beeinflusst Befehle, interne Funktionen und Kontrollanweisungen wie WinExist() und WinActivate.

    DetectHiddenText, OnOff

    Parameter

    @@ -28,7 +28,7 @@

    Parameter

    Bemerkungen

    -

    "Versteckter Text" ist ein Begriff, der sich auf nicht sichtbare Steuerelemente eines Fensters bezieht. Ihr Text gilt daher als "versteckt". Das Ausschalten von DetectHiddenText ist zum Beispiel nützlich, um den Unterschied zwischen den verschiedenen Bereichen eines Multi-Bereich- oder Multi-Tab-Fensters festzustellen. Das interne Tool Window Spy kann genutzt werden, um herauszufinden, welcher Text des aktuell aktiven Fensters versteckt ist. Alle Befehle, internen Funktionen und Ablaufsteuerungsanweisungen, die einen FensterText-Parameter akzeptieren, sind von dieser Einstellung betroffen, einschließlich WinActivate, WinActive(), IfWinActive, WinWait, WinExist() und IfWinExist.

    +

    "Versteckter Text" ist ein Begriff, der sich auf nicht sichtbare Steuerelemente eines Fensters bezieht. Ihr Text gilt daher als "versteckt". Das Ausschalten von DetectHiddenText ist zum Beispiel nützlich, um den Unterschied zwischen den verschiedenen Bereichen eines Multi-Bereich- oder Multi-Tab-Fensters festzustellen. Das interne Tool Window Spy kann genutzt werden, um herauszufinden, welcher Text des aktuell aktiven Fensters versteckt ist. Alle Befehle, internen Funktionen und Kontrollanweisungen, die einen FensterText-Parameter akzeptieren, sind von dieser Einstellung betroffen, einschließlich WinActivate, WinActive(), IfWinActive, WinWait, WinExist() und IfWinExist.

    Die interne Variable A_DetectHiddenText enthält die aktuelle Einstellung (On oder Off).

    Jeder neu gestartete Thread (z. B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet zu Beginn die Standardeinstellung des Befehls. Um diese zu ändern, muss der Befehl im automatischen Ausführungsbereich (ganz oben im Skript) angegeben werden.

    diff --git a/commands/DetectHiddenWindows.htm b/commands/DetectHiddenWindows.htm index 305e0d2d..5c6cdc39 100644 --- a/commands/DetectHiddenWindows.htm +++ b/commands/DetectHiddenWindows.htm @@ -29,7 +29,7 @@

    Parameter

    Bemerkungen

    Das Einschalten von DetectHiddenWindows kann dazu führen, dass der gesuchte Titel oder Text ungewollt mit einem versteckten Systemfenster übereinstimmt. Daher sollten die meisten Skripte diese Einstellung ausgeschaltet lassen. Diese Einstellung wird in der Regel verwendet, um direkt auf versteckte Fenster zuzugreifen, ohne diese vorher mit WinShow sichtbar zu machen.

    -

    Alle Befehle, internen Funktionen und Ablaufsteuerungsanweisungen, die mit Fenstern agieren, außer WinShow, sind von dieser Einstellung betroffen, einschließlich WinActivate, WinActive(), IfWinActive, WinWait, WinExist() und IfWinExist. Beachten Sie, dass WinShow immer in der Lage ist, ein verstecktes Fenster sichtbar zu machen, unabhängig von dieser Einstellung.

    +

    Alle Befehle, internen Funktionen und Kontrollanweisungen, die mit Fenstern agieren, außer WinShow, sind von dieser Einstellung betroffen, einschließlich WinActivate, WinActive(), IfWinActive, WinWait, WinExist() und IfWinExist. Beachten Sie, dass WinShow immer in der Lage ist, ein verstecktes Fenster sichtbar zu machen, unabhängig von dieser Einstellung.

    Das Einschalten von DetectHiddenWindows ist nicht erforderlich, wenn ein Steuerelement oder untergeordnetes Fenster via ahk_id angesteuert oder das zuletzt gefundene Fenster verwendet wird. Dies gilt auch für GUI-Fenster, die via Gui +LastFound angesteuert werden.

    [v1.1.32+]: Getarnte Fenster werden auch als versteckt angesehen. Getarnte Fenster, die mit Windows 8 eingeführt wurden, sind Fenster auf einem inaktiven virtuellen Desktop oder UWP-Anwendungen, die zur Verbesserung der Leistung, genauer gesagt zur Verringerung ihres Speicherverbrauchs, unterbrochen wurden. In Windows 10 werden die Prozesse solcher Fenster mit einem grünen Blatt im Task-Manager angezeigt. Solche Fenster sind trotz WS_VISIBLE-Style für den Benutzer verborgen. Früher vor v1.1.32 war es so, dass alle Fenster mit dem WS_VISIBLE-Style als sichtbar behandelt wurden.

    Die interne Variable A_DetectHiddenWindows enthält die aktuelle Einstellung (On oder Off).

    diff --git a/commands/Else.htm b/commands/Else.htm index b486af58..d02e05d4 100644 --- a/commands/Else.htm +++ b/commands/Else.htm @@ -40,7 +40,7 @@

    Bemerkungen

    }
    -

    Blöcke, If-Anweisungen, Ablaufsteuerungsanweisungen

    +

    Blöcke, If-Anweisungen, Kontrollanweisungen

    Beispiele

    diff --git a/commands/Finally.htm b/commands/Finally.htm index 779884d5..91a20b2d 100644 --- a/commands/Finally.htm +++ b/commands/Finally.htm @@ -25,8 +25,8 @@

    Finally [v1.1.14+]

    Bemerkungen

    Jedes Finally muss mit einer darüberliegenden Try- oder Catch-Anweisung verbunden werden. Ein Finally bezieht sich immer auf nächst darüberliegende noch nicht beanspruchte Try-Anweisung, sofern dieses Verhalten nicht mit einem Block geändert wurde.

    Das Verhalten einer Try-Anweisung ist abhängig davon, ob catch oder finally vorhanden ist. Weitere Informationen finden Sie unter Try.

    -

    Goto, Break, Continue und Return können nicht verwendet werden, um einen Finally-Block zu verlassen, weil es sonst notwendig wäre, jegliche Ablaufsteuerung innerhalb eines Try-Blocks zu unterdrücken. Wenn Try beispielsweise return 42 verwendet, würde der Wert 42 erst zurückgegeben werden, nachdem der Finally-Block ausgeführt wurde. Der Versuch, mittels einem dieser Befehle aus einem Finally-Block zu springen, wird beim Laden des Skripts als Fehler erkannt, sofern möglich, oder ansonsten während das Skript ausgeführt wird.

    -

    Vor [v1.1.19.02] existierte ein Bug, der Ablaufsteuerungen daran hinderte, innerhalb von Try zu funktionieren, während Finally vorhanden war. Return wurde fälschlicherweise in Finally zugelassen, aber ignoriert, wenn eine Ausnahme ausgelöst wurde.

    +

    Goto, Break, Continue und Return können nicht verwendet werden, um einen Finally-Block zu verlassen, weil es sonst notwendig wäre, jegliche Kontrollanweisungen innerhalb eines Try-Blocks zu unterdrücken. Wenn Try beispielsweise return 42 verwendet, würde der Wert 42 erst zurückgegeben werden, nachdem der Finally-Block ausgeführt wurde. Der Versuch, mittels einem dieser Befehle aus einem Finally-Block zu springen, wird beim Laden des Skripts als Fehler erkannt, sofern möglich, oder ansonsten während das Skript ausgeführt wird.

    +

    Vor [v1.1.19.02] existierte ein Bug, der Kontrollanweisungen daran hinderte, innerhalb von Try zu funktionieren, während Finally vorhanden war. Return wurde fälschlicherweise in Finally zugelassen, aber ignoriert, wenn eine Ausnahme ausgelöst wurde.

    Der One True Brace Style (OTB) kann je nach Bedarf bei der Try-Anweisung angewendet werden. Zum Beispiel:

    try {
         ...
    diff --git a/commands/IfEqual.htm b/commands/IfEqual.htm
    index ab6df4b6..b8f6b976 100644
    --- a/commands/IfEqual.htm
    +++ b/commands/IfEqual.htm
    @@ -40,7 +40,7 @@ 

    Bemerkungen

    WinClose Unbenannt - Editor MsgBox Es sind keine Elemente vorhanden. }
    -

    Beachten Sie, dass befehlsartige If-Anweisungen einen Befehl oder eine befehlsartige Ablaufsteuerungsanweisung auf der gleichen Zeile erlauben, allerdings werden falsch geschriebene Befehlsnamen als direkt geschriebener Text behandelt. Mit anderen Worten sind folgende Beispiele gültig:

    +

    Beachten Sie, dass befehlsartige If-Anweisungen einen Befehl oder eine befehlsartige Kontrollanweisung auf der gleichen Zeile erlauben, allerdings werden falsch geschriebene Befehlsnamen als direkt geschriebener Text behandelt. Mit anderen Worten sind folgende Beispiele gültig:

    IfEqual, x, 1, Sleep, 1
     IfGreater, x, 1, EnvAdd, x, 2

    Aber diese ungültig:

    diff --git a/commands/IfWinActive.htm b/commands/IfWinActive.htm index fa36b3a8..2f777419 100644 --- a/commands/IfWinActive.htm +++ b/commands/IfWinActive.htm @@ -14,7 +14,7 @@

    IfWinActive / IfWinNotActive

    Überprüft, ob ein bestimmtes Fenster existiert und zurzeit aktiv ist.

    -

    Veraltet: Diese Ablaufsteuerungsanweisungen sind nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die WinActive-Funktion.

    +

    Veraltet: Diese Kontrollanweisungen sind nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die WinActive-Funktion.

    IfWinActive , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
     IfWinNotActive , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
    @@ -37,9 +37,9 @@

    Parameter

    Bemerkungen

    Wenn alle Parameter weggelassen werden, wird das Zuletzt Gefundene Fenster verwendet.

    -

    Wenn eine dieser Ablaufsteuerungsanweisungen feststellt, dass das aktive Fenster eine geeignete Übereinstimmung ist, wird das Zuletzt Gefundene Fenster aktualisiert, um das aktive Fenster zu sein. Wenn also IfWinActive als "wahr" oder IfWinNotActive als "falsch" gewertet wird, wird das Zuletzt Gefundene Fenster aktualisiert.

    +

    Wenn eine dieser Kontrollanweisungen feststellt, dass das aktive Fenster eine geeignete Übereinstimmung ist, wird das Zuletzt Gefundene Fenster aktualisiert, um das aktive Fenster zu sein. Wenn also IfWinActive als "wahr" oder IfWinNotActive als "falsch" gewertet wird, wird das Zuletzt Gefundene Fenster aktualisiert.

    Ein einfacher Weg, die HWND-Nummer (eindeutige ID) des aktiven Fensters abzurufen, ist AktiveHwnd := WinExist("A").

    -

    SetWinDelay hat keinen Einfluss auf diese Ablaufsteuerungsanweisungen.

    +

    SetWinDelay hat keinen Einfluss auf diese Kontrollanweisungen.

    Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.

    diff --git a/commands/IfWinExist.htm b/commands/IfWinExist.htm index ccd1221f..cd3730fb 100644 --- a/commands/IfWinExist.htm +++ b/commands/IfWinExist.htm @@ -14,7 +14,7 @@

    IfWinExist / IfWinNotExist

    Überprüft, ob ein bestimmtes Fenster existiert.

    -

    Veraltet: Diese Ablaufsteuerungsanweisungen sind nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die WinExist-Funktion.

    +

    Veraltet: Diese Kontrollanweisungen sind nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die WinExist-Funktion.

    IfWinExist , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
     IfWinNotExist , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
    @@ -37,9 +37,9 @@

    Parameter

    Bemerkungen

    Wenn alle Parameter weggelassen werden, wird das Zuletzt Gefundene Fenster überprüft, ob es noch existiert (oder nicht existiert, im Falle von IfWinNotExist).

    -

    Wenn eine dieser Ablaufsteuerungsanweisungen feststellt, dass ein geeignetes Fenster vorhanden ist, wird das Zuletzt Gefundene Fenster aktualisiert, um dieses Fenster zu sein. Wenn also IfWinExist als "wahr" oder IfWinNotExist als "falsch" gewertet wird, wird das Zuletzt Gefundene Fenster aktualisiert.

    +

    Wenn eine dieser Kontrollanweisungen feststellt, dass ein geeignetes Fenster vorhanden ist, wird das Zuletzt Gefundene Fenster aktualisiert, um dieses Fenster zu sein. Wenn also IfWinExist als "wahr" oder IfWinNotExist als "falsch" gewertet wird, wird das Zuletzt Gefundene Fenster aktualisiert.

    Um die HWND-Nummer eines Steuerelements abzurufen (z. B. für Post/SendMessage oder DllCall), können Sie ControlGet Hwnd oder MouseGetPos nutzen.

    -

    SetWinDelay hat keinen Einfluss auf diese Ablaufsteuerungsanweisungen.

    +

    SetWinDelay hat keinen Einfluss auf diese Kontrollanweisungen.

    Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.

    diff --git a/commands/SetWinDelay.htm b/commands/SetWinDelay.htm index 8aa3de17..d06cf396 100644 --- a/commands/SetWinDelay.htm +++ b/commands/SetWinDelay.htm @@ -25,7 +25,7 @@

    Parameter

    Bemerkungen

    -

    Nach jedem Befehl, jeder internen Funktion und jeder Ablaufsteuerungsanweisung, der/die mit Fenstern agiert, außer WinActive(), IfWinActive, WinExist() und IfWinExist, erfolgt automatisch eine kurze Verzögerung (Sleep). Diese Verzögerung ist notwendig, um die Zuverlässigkeit der Skripte zu verbessern, weil einige Fenster eine Ruhephase benötigen, nachdem sie erstellt, aktiviert, minimiert usw. wurden. So haben sie eine Chance, sich selbst zu aktualisieren und auf dem nächsten Befehl reagieren zu können, den das Skript an dieses Fenster senden will.

    +

    Nach jedem Befehl, jeder internen Funktion und jeder Kontrollanweisung, der/die mit Fenstern agiert, außer WinActive(), IfWinActive, WinExist() und IfWinExist, erfolgt automatisch eine kurze Verzögerung (Sleep). Diese Verzögerung ist notwendig, um die Zuverlässigkeit der Skripte zu verbessern, weil einige Fenster eine Ruhephase benötigen, nachdem sie erstellt, aktiviert, minimiert usw. wurden. So haben sie eine Chance, sich selbst zu aktualisieren und auf dem nächsten Befehl reagieren zu können, den das Skript an dieses Fenster senden will.

    Auch wenn eine Verzögerung von -1 (überhaupt keine Verzögerung) zulässig ist, wird empfohlen, mindestens 0 zu verwenden, um ein reibungsloses Ausführen des Skripts auch unter hoher CPU-Auslastung zu ermöglichen.

    Eine Verzögerung von 0 führt intern Sleep(0) aus. Dies bewirkt, dass die restliche Zeitscheibe des Skripts an jeden anderen Prozess, der sie benötigen könnte, übergeben wird. Wenn sie von keinem Prozess benötigt wird, erzeugt Sleep(0) überhaupt kein Sleep.

    Wenn die CPU langsam oder ausgelastet ist, oder die Fensteranimation aktiviert ist, können höhere Verzögerungswerte notwendig sein.

    diff --git a/commands/index.htm b/commands/index.htm index 575dd24d..0851811a 100644 --- a/commands/index.htm +++ b/commands/index.htm @@ -2,7 +2,7 @@ Alphabetischer Befehls- und Funktionsindex | AutoHotkey - + @@ -21,7 +21,7 @@

    Alphabetischer Befehls- und Funktionsindex

    - + @@ -197,7 +197,7 @@

    Alphabetischer Befehls- und Funktionsindex

    - + diff --git a/misc/Labels.htm b/misc/Labels.htm index a2529ca9..11a8d6af 100644 --- a/misc/Labels.htm +++ b/misc/Labels.htm @@ -57,7 +57,7 @@

    Syntax und Verwendung

    return

    Subroutinen

    -

    Eine Subroutine ist ein Teil des Codes, der aufgerufen werden kann, um eine bestimmte Aufgabe durchzuführen. Die Ausführung einer Subroutine beginnt beim Ziel eines Labels und endet, wenn ein Return oder Exit erreicht wird. Da das Ende einer Subroutine abhängig von der Ablaufsteuerung ist, kann jedes Label als Goto-Ziel und als Beginn einer Subroutine fungieren.

    +

    Eine Subroutine ist ein Teil des Codes, der aufgerufen werden kann, um eine bestimmte Aufgabe durchzuführen. Die Ausführung einer Subroutine beginnt beim Ziel eines Labels und endet, wenn ein Return oder Exit erreicht wird. Da das Ende einer Subroutine abhängig vom Kontrollfluss ist, kann jedes Label als Goto-Ziel und als Beginn einer Subroutine fungieren.

    Dynamische Label

    Viele Befehle, die einen Labelnamen akzeptieren, akzeptieren auch eine Variablenreferenz wie %MeinLabel% - in diesem Fall wird der Name, der in der Variable enthalten ist, als Ziel verwendet. Allerdings geschieht das auf Kosten der Leistung, weil das Ziellabel jedes Mal neu gesucht werden muss und nicht wie sonst nur beim Starten des Skripts.

    diff --git a/misc/WinTitle.htm b/misc/WinTitle.htm index df74fea2..7a2a4355 100644 --- a/misc/WinTitle.htm +++ b/misc/WinTitle.htm @@ -28,7 +28,7 @@

    FensterTitel-Parameter & Zuletzt Gefundenes Fenster

    -

    Verschiedene Befehle, Funktionen und Ablaufsteuerungsanweisungen haben einen FensterTitel-Parameter, mit dem bestimmt werden kann, welche Fenster einbezogen werden sollen. Dieser Parameter kann der Titel des Fensters (teilweise oder vollständig) sein, und/oder sonstige Kriterien, die auf dieser Seite beschrieben werden.

    +

    Verschiedene Befehle, Funktionen und Kontrollanweisungen haben einen FensterTitel-Parameter, mit dem bestimmt werden kann, welche Fenster einbezogen werden sollen. Dieser Parameter kann der Titel des Fensters (teilweise oder vollständig) sein, und/oder sonstige Kriterien, die auf dieser Seite beschrieben werden.

    Kurzübersicht:
    { ... } (Block)Blöcke sind eine oder mehr Anweisungen, die von zwei geschweiften Klammern umschlossen sind. Diese werden häufig im Zusammenhang mit Funktionsdefinitionen und Ablaufsteuerungsanweisungen verwendet.Blöcke sind eine oder mehr Anweisungen, die von zwei geschweiften Klammern umschlossen sind. Diese werden häufig im Zusammenhang mit Funktionsdefinitionen und Kontrollanweisungen verwendet.
    { ... } / Object()
    DetectHiddenTextLegt fest, ob unsichtbare Texte in einem Fenster "gesehen" werden können, um das Fenster zu finden. Dies beeinflusst Befehle, interne Funktionen und Ablaufsteuerungsanweisungen wie WinExist() und WinActivate.Legt fest, ob unsichtbare Texte in einem Fenster "gesehen" werden können, um das Fenster zu finden. Dies beeinflusst Befehle, interne Funktionen und Kontrollanweisungen wie WinExist() und WinActivate.
    DetectHiddenWindows
    @@ -89,7 +89,7 @@

    ahk_exe (Prozessname/-pfad) [v1.1.01+]

    ahk_group (Fenstergruppe)

    Verwenden Sie ahk_group GruppeName in FensterTitel, um ein oder mehrere Fenster zu identifizieren, die den Regeln einer zuvor definierten Fenstergruppe entsprechen.

    -

    WinMinimize, WinMaximize, WinRestore, WinHide, WinShow, WinClose und WinKill werden mit allen Fenstern der Gruppe agieren. Andere fensterspezifische Befehle, Funktionen und Ablaufsteuerungsanweisungen wie WinActivate, WinExist() und IfWinExist agieren hingegen nur mit dem obersten Fenster einer Gruppe.

    +

    WinMinimize, WinMaximize, WinRestore, WinHide, WinShow, WinClose und WinKill werden mit allen Fenstern der Gruppe agieren. Andere fensterspezifische Befehle, Funktionen und Kontrollanweisungen wie WinActivate, WinExist() und IfWinExist agieren hingegen nur mit dem obersten Fenster einer Gruppe.

    Das folgende Beispiel aktiviert jedes Fenster, das den Kriterien einer Fenstergruppe entspricht:

    ; Definiert die Gruppe: Windows-Explorer-Fenster
     GroupAdd, Explorer, ahk_class ExploreWClass ; Unbenutzt in Vista und höher
    @@ -113,8 +113,8 @@ 

    Mehrere Kriterien

    Zuletzt Gefundenes Fenster

    -

    Das zuletzt gefundene Fenster ist das Fenster, das zuletzt von IfWinExist, IfWinNotExist, WinExist(), IfWinActive, IfWinNotActive, WinActive(), WinWaitActive, WinWaitNotActive oder WinWait gefunden wurde. Dieses Fenster kann die Erstellung und Pflege von Skripten erleichtern, da es verhindert, für jeden Befehl, jede interne Funktion oder jede Ablaufsteuerungsanweisung, der/die mit Fenstern agiert, den FensterTitel und FensterText des Zielfensters angeben zu müssen. Zudem verbessert das die Leistung der Skripte, weil das Zielfenster, nachdem es gefunden wurde, nicht nochmal gesucht werden muss.

    -

    Das zuletzt gefundene Fenster kann von allen fensterspezifischen Befehlen, internen Funktionen und Ablaufsteuerungsanweisungen, außer WinWait, WinActivateBottom, GroupAdd, WinGet Count und WinGet List, verwendet werden. Um es zu nutzen, lassen Sie einfach alle vier Fensterparameter weg (FensterTitel, FensterText, IgnoriereTitel und IgnoriereText).

    +

    Das zuletzt gefundene Fenster ist das Fenster, das zuletzt von IfWinExist, IfWinNotExist, WinExist(), IfWinActive, IfWinNotActive, WinActive(), WinWaitActive, WinWaitNotActive oder WinWait gefunden wurde. Dieses Fenster kann die Erstellung und Pflege von Skripten erleichtern, da es verhindert, für jeden Befehl, jede interne Funktion oder jede Kontrollanweisung, der/die mit Fenstern agiert, den FensterTitel und FensterText des Zielfensters angeben zu müssen. Zudem verbessert das die Leistung der Skripte, weil das Zielfenster, nachdem es gefunden wurde, nicht nochmal gesucht werden muss.

    +

    Das zuletzt gefundene Fenster kann von allen fensterspezifischen Befehlen, internen Funktionen und Kontrollanweisungen, außer WinWait, WinActivateBottom, GroupAdd, WinGet Count und WinGet List, verwendet werden. Um es zu nutzen, lassen Sie einfach alle vier Fensterparameter weg (FensterTitel, FensterText, IgnoriereTitel und IgnoriereText).

    Jeder Thread behält seinen eigenen Wert des zuletzt gefundenen Fensters. Soll heißen: Wenn der aktuelle Thread von einem anderen unterbrochen wird, hat der ursprüngliche Thread bei Wiederaufnahme immer noch seinen originalen Wert des zuletzt gefundenen Fensters, nicht den des unterbrechenden Threads.

    Wenn das zuletzt gefundene Fenster ein verstecktes GUI-Fenster ist, kann es auch bei ausgeschaltetem DetectHiddenWindows verwendet werden. Das wird oft in Verbindung mit Gui +LastFound benutzt.

    Das folgende Beispiel öffnet den Texteditor, wartet, bis er existiert, und aktiviert ihn:

    diff --git a/static/source/data_index.js b/static/source/data_index.js index c8f28876..fdeda16f 100644 --- a/static/source/data_index.js +++ b/static/source/data_index.js @@ -365,7 +365,7 @@ indexData = [ ["continuation sections","Scripts.htm#continuation"],["Fortsetzungsbereiche","Scripts.htm#continuation"], ["Continue","commands/Continue.htm",3,"S"], ["Control","commands/Control.htm",6,"SSSSSSS"], - ["control flow","Language.htm#control-flow"],["Ablaufsteuerung","Language.htm#control-flow"], + ["control flow","Language.htm#control-flow"],["Kontrollfluss","Language.htm#control-flow"], ["ControlClick","commands/ControlClick.htm",6,"SSSSESSS"], ["ControlFocus","commands/ControlFocus.htm",6,"SSSSS"], ["ControlGet","commands/ControlGet.htm",6,"OSSSSSSS"], diff --git a/static/source/data_toc.js b/static/source/data_toc.js index 8177b797..b78daea8 100644 --- a/static/source/data_toc.js +++ b/static/source/data_toc.js @@ -106,7 +106,7 @@ tocData = [ ["SetWorkingDir","commands/SetWorkingDir.htm"], ["SplitPath","commands/SplitPath.htm"] ]], - ["Ablaufsteuerung","", + ["Kontrollfluss","", [ ["#Include[Again]","commands/_Include.htm"], ["{ ... } (Block)","commands/Block.htm"], diff --git a/static/source/data_translate.js b/static/source/data_translate.js index 36880cc4..f4d58dbd 100644 --- a/static/source/data_translate.js +++ b/static/source/data_translate.js @@ -10,7 +10,7 @@ translateData = { "Directives":"Direktiven", "Built-in Variables":"Interne Variablen", "Built-in Functions":"Interne Funktionen", - "Control Flow Statements":"Ablaufsteuerungsanweisungen", + "Control Flow Statements":"Kontrollanweisungen", "Declarations":"Deklarationen", "Operators":"Operatoren", "Commands":"Befehle",