From e54e2bd1c21805e651e46189eb7e3d0e0c6c2862 Mon Sep 17 00:00:00 2001 From: Ragnar-F Date: Sun, 22 May 2016 15:40:22 +0200 Subject: [PATCH] v1.1.24.00 --- AHKL_ChangeLog.htm | 25 +++++++++++++++++++++++ AutoHotkey.htm | 2 +- FAQ.htm | 10 ++++++++++ KeyList.htm | 2 +- commands/GuiControls.htm | 43 +++++++++++++++++++++++++++++++++++----- commands/InStr.htm | 4 ++-- commands/SetTimer.htm | 11 ++++++---- objects/File.htm | 6 ++++-- 8 files changed, 88 insertions(+), 15 deletions(-) diff --git a/AHKL_ChangeLog.htm b/AHKL_ChangeLog.htm index 0724d133..bca6ce36 100644 --- a/AHKL_ChangeLog.htm +++ b/AHKL_ChangeLog.htm @@ -15,6 +15,31 @@

Änderungen und neue Features

Ältere Änderungen können in Archivierte Änderungen gefunden werden.

+

1.1.24.00 - 22. Mai 2016

+

Gravierende Änderungen:

+

Der Versuch, eine leere Variable oder einen Ausdruck, der zu einem leeren Wert führt, an SetTimer's Label-Parameter zu übergeben, wird absofort als Fehler eingestuft. Dieser Parameter darf weder leer sein noch fehlen.

+

Einmalig-laufende Timer werden nach ihrem Durchlauf automatisch gelöscht, wenn sie mit einem via Skript erstellten Objekt verbunden sind. Dadurch kann das Objekt freigegeben werden, wenn es vom Skript nicht länger benötigt wird, aber das bedeutet auch, dass die Periode und Priorität des Timers verworfen werden.

+

SetTimer, Hotkey, GuiControl und Menu überprüfen nun die minimale Parameteranzahl von Funktionen, die via Verweis übergeben wurden (nicht nur via Namen, wie in früheren Versionen). Wenn die Funktion zu viele Parameter benötigt, wird ein Fehler ausgelöst oder ErrorLevel gesetzt (je nach Bedarf).

+

Abwärtskompatible Änderungen:

+

Wenn SetTimer's Label-Parameter fehlt und A_ThisLabel leer ist, wird der aktuelle Timer (sofern vorhanden) verwendet.

+

Neue Features:

+

Hinzugefügt: Neue Tab-Steuerelementart Tab3, das viele Probleme löst, die bei den anderen Tab-Steuerelementarten vorkommen.

+

Fehlerbehebungen:

+

Behoben: GuiControl aktualisiert nun Steuerelemente beim Hinzufügen/Löschen von Tabs. Im Einzelnen:

+ +

Behoben: +Disabled/+Hidden verloren ihren Effekt bei Steuerelementen in einem Tab.

+

Behoben: Deaktivierte Tab-Steuerelemente ignorieren absofort STRG+TAB.

+

Behoben: Gui Tab ohne Parameter beginnt nun eine neue Radiogruppe, falls zutreffend. Gui Tab mit Parametern hatte bereits diesen Effekt.

+

1.1.23.07 - 20. Mai 2016

+

Behoben: Menu x, Insert, y, z, % Objekt verwendet nun das Objekt, anstatt es zu ignorieren.

+

Behoben: Menu x, Add, :item text, % Objekt verwendet nun das Objekt, anstatt nach einem Untermenü zu suchen.

+ +

1.1.23.06 - 15. Mai 2016

+

Behoben: break label ließ das Programm abstürzen, wenn diese Anweisung direkt in ihrer Zielschleife verschachtelt wurde.

+

1.1.23.05 - 27. März 2016

Behoben: InputBox, MsgBox, FileSelectFile und FileSelectFolder sendeten ein ungewolltes ALT-UP, wenn ALT unten war. Der Grund war ein Fehler mit dem STRG/UMSCHALT-Workaround in v1.1.22.01.

Verbessert: Der STRG/UMSCHALT-Workaround "maskiert" nicht länger unnötigerweise die WIN-Taste, wenn STRG, UMSCHALT oder ALT unten ist.

diff --git a/AutoHotkey.htm b/AutoHotkey.htm index 3bf6e724..7efab693 100644 --- a/AutoHotkey.htm +++ b/AutoHotkey.htm @@ -11,7 +11,7 @@ -

Version v1.1.23.05

+

Version v1.1.24.00

Eine deutsche Übersetzung von https://autohotkey.com/docs/ (siehe hier für mehr Details).

©2003-2014 Chris Mallett, und zum Teil ©AutoIt-Team und die AHK-Community

Software-Lizenz: GNU General Public License

diff --git a/FAQ.htm b/FAQ.htm index 237cbb1f..0df2dfd8 100644 --- a/FAQ.htm +++ b/FAQ.htm @@ -22,6 +22,7 @@

Sprachsyntax

Allgemeine Problembehandlung

@@ -301,10 +301,17 @@

GroupBox

Gui, Add, GroupBox, w400 h300, Geographische Kriterien

Standardmäßig kann der Titel einer GroupBox nur einzeilig sein. Das kann durch die Angabe von Wrap in den Optionen des Steuerelements überschrieben werden.

Um die Anzahl der Zeilen innerhalb des Steuerelements zu bestimmen (oder dessen Höhe und Breite), siehe Position und Größe von Steuerelementen anpassen.

-

Tab2

+ +

Tab3

Beschreibung: Ein großes Steuerelement mit mehreren Seiten, von denen jede weitere Steuerelemente enthalten kann. Von nun an werden diese Seiten "Tabs" genannt.

-

Tab2 vs. Tab: Seit v1.0.47.05 gibt es das Tab2-Steuerelement, das im originalen Tab-Steuerelement seltene Probleme beim Neuzeichnen behebt (z. B. beim Aktivieren eines GUI-Fensters durch Anklicken bestimmter Bereiche in Steuerelementen wie Scrollleisten). Das ursprüngliche Tab-Steuerelement wird aufgrund der Abwärtskompatibilität beibehalten, weil Tab2 das Tab-Steuerelement erst einfügen wird, wenn es Steuerelemente in Navigationsreihenfolge der TAB-Taste enthält. Neue Skripte sollten wenn möglich immer Tab2 verwenden. Beispiel:

-
Gui, Add, Tab2,, Allgemein|Ansicht|Darstellung|Einstellungen
+

Es gibt drei Arten des Tab-Steuerelements:

+ +

Beispiel:

+
Gui, Add, Tab3,, Allgemein|Ansicht|Darstellung|Einstellungen

Im oberen Beispiel enthält der letzte Parameter eine mit senkrechten Strichen getrennte Liste von Tabnamen. Wenn einer der Tabs zu Beginn vorab ausgewählt sein soll, müssen nach diesem Tab zwei senkrechte Striche erfolgen (z. B. Rot|Grün||Blau). Alternativ kann man auch das Wort Choose in Optionen angeben, unmittelbar gefolgt von der Nummer des Elements, um es vorab auszuwählen. Zum Beispiel würde Choose5 den fünften Tab vorab auswählen (wie bei den anderen Optionen auch, kann das eine Variable sein, wie z. B. Choose%Var%). Mit GuiControl kann der ausgewählte Tab geändert, Tabs hinzugefügt oder Tabs entfernt werden, nachdem das Steuerelement erstellt worden ist.

Nach dem Erstellen eines Tab-Steuerelements gehören Steuerelemente, die danach erfolgen, automatisch dem ersten Tab. Das kann jederzeit wie folgt geändert werden:

Gui, Tab  ; Zukünftige Steuerelemente sind nicht Teil des Tab-Steuerelements.
@@ -314,11 +321,37 @@ 

GroupBox

Gui, Tab, Name,, Exact ; Das gleiche wie oben, aber mit exakter Übereinstimmung (mit Groß/Klein-Unterscheidung).

Es ist auch möglich, irgendeins der obigen Beispielen zu verwenden, um Steuerelemente einem Tab oder Tab-Steuerelement zuzuweisen, das noch nicht vorhanden ist (außer bei der Name-Methode). In diesem Fall aber werden die unten beschriebenen Optionen zur relativen Positionierung nicht unterstützt.

Positionierung: Bei jedem Tab oder Tab-Steuerelement, das sein erstes Untersteuerelement erhält, wird dieses Untersteuerelement eine spezielle Standardposition unter Berücksichtigung folgender Bedingungen haben: 1) Fehlt sowohl die X- als auch Y-Koordinate, wird das erste Untersteuerelement auf die obere linke Ecke des Tab-Steuerelements positioniert (mit einem Standard-Abstand). Die restlichen Untersteuerelemente werden jeweils unter dem vorherigen Steuerelement positioniert; 2) Sind die Positionierungsoptionen X+n und/oder Y+n angegeben, wird das Untersteuerelement relativ zur linken oberen Ecke des Innenbereichs vom Tab-Steuerelement positioniert. Zum Beispiel würde die Angabe von x+10 y+10 bewirken, dass das Steuerelement 10 Pixel nach rechts und 10 Pixel nach unten von der linken oberen Ecke positioniert wird.

-

Untersteuerelemente müssen nicht unbedingt innerhalb der Grenzen des Tab-Steuerelements vorkommen: Sie werden weiterhin immer dann versteckt und sichtbar gemacht, wenn deren Tab ausgewählt oder abgewählt wird. Dieses Verhalten ist besonders für den unten beschriebenen Buttons-Style geeignet.

Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) der Name des aktuell ausgewählten Tabs gespeichert. Hat das Steuerelement jedoch die AltSubmit-Eigenschaft, wird in die Ausgabevariable stattdessen die Positionsnummer des Tabs (der erste Tab ist 1, der zweite ist 2 und so weiter) gespeichert.

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer auf einen anderen Tab wechselt. Hat das Tab-Steuerelement sowohl ein g-Label als auch eine Ausgabevariable, wird die Ausgabevariable beim Wechseln des Tabs auf den zuvor ausgewählten Tabnamen gesetzt (oder bei AltSubmit auf die Nummer).

Navigation mit der Tastatur: Der Benutzer kann mit STRG+BILD-AUF oder mit STRG+BILD-AB zwischen den Tabs wechseln. Befindet sich der Tastaturfokus auf einem Steuerelement, das nicht zum Tab-Steuerelement gehört, wird das erste Tab-Steuerelement des Fensters angesteuert. STRG+TAB und STRG+UMSCHALT+TAB können auch verwendet werden, aber mit der Ausnahme, dass sie nicht funktionieren, wenn das aktuell fokussierte Steuerelement ein mehrzeiliges Eingabefeld ist.

Jedes Fenster kann nicht mehr als 255 Tab-Steuerelemente enthalten. Jedes Tab-Steuerelement kann nicht mehr als 256 Tabs (Seiten) haben. Darüber hinaus ist es nicht möglich, dass ein Tab-Steuerelement weitere Tab-Steuerelemente enthalten kann.

+ +

Tab3 vs. Tab2 vs. Tab

+

Übergeordnetes Fenster: Das übergeordnete Fenster eines Steuerelements hat sowohl Einfluss auf die Positionierung und Sichtbarkeit des Steuerelements als auch auf die Navigationsreihenfolge via TAB-Taste. Ein Untersteuerelement innerhalb eines vorhandenen Tab3-Steuerelements verwendet als übergeordnetes Fenster das sogenannte "Tab-Dialogfenster", welches den Anzeigebereich des Tab-Steuerelements ausfüllt. Alle anderen Steuerelemente, einschließlich der Untersteuerelemente von Tab oder Tab2, verwenden als übergeordnetes Fenster nur das GUI-Fenster selbst.

+

Positionierung: Untersteuerelemente von Tab und Tab2 sind nicht unbedingt an den Grenzen des Tab-Steuerelements gebunden: Sie werden weiterhin immer dann versteckt und sichtbar gemacht, wenn deren Tab ausgewählt oder abgewählt wird. Dieses Verhalten ist besonders für den unten beschriebenen Buttons-Style geeignet.

+

Wenn man ein Untersteuerelement einem Tab3-Steuerelement zuweist, bevor das Tab3-Steuerelement erstellt wird, dann verhält sich das Untersteuerelement so, als hätte man es in ein Tab- oder Tab2-Steuerelement eingefügt. Alle anderen Untersteuerelemente sind nur innerhalb des Anzeigebereichs des Tab-Steuerelements sichtbar.

+

Beim Verschieben eines Tab3-Steuerelements werden auch seine Untersteuerelemente verschoben. Dieses Verhalten trifft nicht auf Tab- und Tab2-Steuerelemente zu.

+

Wenn man im seltenen Fall ein Steuerelement via WinMove (oder gleichwertigem DllCall-Aufruf) verschiebt, müssen die Koordinaten relativ zum übergeordneten Fenster des Steuerelements sein, welches nicht unbedingt das GUI sein muss (siehe oben). GuiControl Move hingegen nimmt immer GUI-Koordinaten und ControlMove immer die Fensterkoordinaten, unabhängig vom übergeordneten Fenster des Steuerelements.

+

Navigationsreihenfolge via TAB-Taste: Die Reihenfolge der hinzugefügten Steuerelemente bestimmt die Reihenfolge der Navigation via TAB-Taste. Bei Tab-Steuerelementen ist die Reihenfolge zusätzlich abhängig davon, welche Art von Tab-Steuerelement verwendet wird:

+ +

Benachrichtigungen (Tab3): Gewöhnliche und benutzerdefinierte Steuerelemente senden Benachrichtigungen in der Regel an ihre übergeordneten Fenster. WM_COMMAND, WM_NOTIFY, WM_VSCROLL, WM_HSCROLL oder WM_CTLCOLOR-Benachrichtigungen, die an das Tab-Dialogfenster eines Tab3-Steuerelements gesendet werden, werden an das GUI-Fenster weitergeleitet und können via OnMessage abgefangen werden. Wenn das Tab-Steuerelement das aktuelle Windows-Design verwendet und wenn die Option +BackgroundTrans fehlt, wird WM_CTLCOLORSTATIC vollkommen vom Tab-Dialogfenster berücksichtigt und nicht weitergeleitet. Andere Benachrichtigungen (z. B. benutzerdefinierte Benachrichtigungen) werden nicht unterstützt.

+

Bekannte Probleme mit Tab2:

+ +

Bekannte Probleme mit Tab:

+ +

Tab-Optionen

Choose: Siehe oben.

-Background: Überschreibt die benutzerdefinierte Hintergrundfarbe des Fensters und verwendet die Standardfarbe des Tab-Steuerelements vom Betriebssystem. Verwende +Theme -Background, um das Tab-Steuerelement an das aktuelle Desktop-Theme anzupassen. Allerdings werden dadurch die meisten Steuerelementarten im Tab-Steuerlement merkwürdig dargestellt, weil deren Hintergründe nicht mit dem Hintergrund des Tab-Steuerelements übereinstimmen. Bei einigen Steuerelementarten (wie Text) kann das Problem behoben werden, wenn BackgroundTrans in deren Optionen eingefügt wird.

diff --git a/commands/InStr.htm b/commands/InStr.htm index 5a0aa194..950ecfa8 100644 --- a/commands/InStr.htm +++ b/commands/InStr.htm @@ -32,10 +32,10 @@

Parameter

Startposition

Ist Startposition nicht vorhanden, gilt standardmäßig 1 (der Anfang von Heuhaufen). Ansonsten kann eine 2 angegeben werden, um beim zweiten Zeichen zu beginnen, eine 3, um beim dritten Zeichen zu beginnen, und so weiter.

-

Überschreitet Startposition die Länge von Heuhaufen, wird eine 0 zurückgegeben. Wenn Startposition eine 0 oder negativ ist, erfolgt die Suche in umgekehrter Reihenfolge (von rechts nach links), beginnend beim Offset am Ende.

+

Überschreitet Startposition die Länge von Heuhaufen, wird eine 0 zurückgegeben. [AHK_L 57+]: Wenn Startposition eine 0 oder negativ ist, erfolgt die Suche in umgekehrter Reihenfolge (von rechts nach links), beginnend beim Offset am Ende.

Egal welchen Wert man als Startposition verwendet - der Rückgabewert ist immer relativ zum ersten Heuhaufen-Zeichen. Zum Beispiel wäre die Position von "abc" in "123abc789" immer 4.

-
Vorkommen
+
Vorkommen [AHK_L 57+]

Fehlt Vorkommen, gilt standardmäßig die erste Übereinstimmung von Nadel in Heuhaufen. Schreibe eine 2 in Vorkommen, um die Position der zweiten Übereinstimmung zurückzugeben, eine 3 für die dritte Übereinstimmung und so weiter.

diff --git a/commands/SetTimer.htm b/commands/SetTimer.htm index a0a58c7b..4e326210 100644 --- a/commands/SetTimer.htm +++ b/commands/SetTimer.htm @@ -19,10 +19,11 @@

SetTimer

Parameter

-
Label
+
Label

Name des Labels oder Hotkey-Labels, der angesprungen werden soll, um die Befehle unterhalb von Label auszuführen, bis ein Return oder Exit erreicht wurde. Label kann, wie Parameter und die meisten anderen Befehle auch, einen Variablenverweis wie %MeinLabel% enthalten, um den gespeicherten Namen in der Variable als Ziel zu verwenden.

-

[v1.1.01+]: Fehlt das Label, wird stattdessen A_ThisLabel verwendet. Zum Beispiel könnte SetTimer,, Off innerhalb einer Timer-Subroutine verwendet werden, um den Timer zu deaktivieren. Bekannte Einschränkung: SetTimer wird auch dann den Wert von A_ThisLabel verwenden, wenn der laufende Timer eine Funktion oder ein Objekt (nicht Label) aufgerufen hat, oder wenn keine Timer laufen.

+

[v1.1.01+]: Fehlt das Label, wird stattdessen A_ThisLabel verwendet. Zum Beispiel könnte SetTimer,, Off innerhalb einer Timer-Subroutine verwendet werden, um den Timer zu deaktivieren. SetTimer,, 1000 wiederrum würde entweder die Periode des aktuellen Timers ändern oder einen neuen Timer mit dem Label der aktuell laufenden Subroutine erstellen. [v1.1.24+]: Wenn A_ThisLabel leer ist, aber der aktuelle Thread durch einen Timer gestartet wurde, wird dieser Timer verwendet. Das ist besonders für Timer nützlich, die Funktionen oder Funktionsobjekte starten müssen.

[v1.1.20+]: Wenn es kein gültiger Labelname ist, kann dieser Parameter der Name einer Funktion sein, oder ein einzelner Variablenverweis mit einem Funktionsobjekt. Zum Beispiel SetTimer %funkobj%, 1000 oder SetTimer %funkobj, 1000. Andere Ausdrücke, die Objekte zurückgeben, werden zurzeit nicht unterstützt. Mehr dazu findest du im Beispiel weiter unten.

+

Hinweis: [v1.1.24+]: Die Übergabe einer leeren Variable oder eines Ausdrucks, der zu einem leeren Wert führt, wird als Fehler eingestuft. Dieser Parameter darf weder leer sein noch fehlen.

Periode|On|Off|Delete
@@ -32,7 +33,8 @@

Parameter

Periode: Erstellt oder aktualisiert einen Timer. Der absolute Wert von diesem Parameter ist die ungefähre Zeit in Millisekunden, die ablaufen muss, bevor der Timer ausgeführt wird. Der Timer wird dabei automatisch aktiviert und zurückgesetzt. Man kann den Timer so einstellen, dass er sich automatisch wiederholt oder nur einmal läuft:

Periode muss ein Integer sein. Verwendet man eine Variable oder einen Ausdruck, werden Nachkommastellen ignoriert. Ihr absoluter Wert darf nicht größer sein als 4294967295 ms (49,7 Tage).

Default: Wenn dieser Parameter leer ist und:
@@ -165,10 +167,11 @@

Beispiele

ToolTip % ++this.count } } -

Hinweise zum oberen Beispiel:

+

Tipps bezüglich des oberen Beispiels:

diff --git a/objects/File.htm b/objects/File.htm index a49a76c9..0b58c8d9 100644 --- a/objects/File.htm +++ b/objects/File.htm @@ -51,7 +51,8 @@

File-Objekt [AHK_L 42+]

-
ZahlentypEinen der folgenden Typen direkt als Teil der Funktion angegeben:
UInt, Int, Int64, Short, UShort, Char, UChar, Double oder Float.
RückgabeEine Zahl bei Erfolg, ansonsten eine leere Zeichenkette.
+ +

Wenn eine Try-Anweisung aktiv ist und keine Bytes gelesen wurden, wird eine Ausnahme ausgelöst. Es wird keine Ausnahme ausgelöst, wenn mindestens ein Byte gelesen wurde, selbst wenn die Größe des angegebenen Zahlentyps größer ist als die Anzahl der gelesenen Bytes. Stattdessen werden die fehlenden Bytes als Null angesehen.

WriteNum

Schreibt eine Zahl in die Datei und rückt dabei den Dateizeiger vor.

@@ -69,7 +70,8 @@

File-Objekt [AHK_L 42+]

VarOderAdresseEine Variable oder Speicheradresse, in der die Daten kopiert werden. Die Verwendung hat Ähnlichkeit mit NumGet. BytesDie maximale Anzahl der zu lesenden Bytes. RückgabeDie Anzahl der Bytes, die gelesen wurden. -
+ +

Wenn eine Try-Anweisung aktiv ist und Bytes ungleich Null ist, aber keine Bytes gelesen wurden, wird eine Ausnahme ausgelöst. Mit AtEOF kann man das verhindern, wenn nötig.

RawWrite

Schreibt unbearbeitete Binärdaten in die Datei.