diff --git a/target/docs/ChangeLog.htm b/target/docs/ChangeLog.htm index a1efb078..653da9b4 100644 --- a/target/docs/ChangeLog.htm +++ b/target/docs/ChangeLog.htm @@ -15,6 +15,14 @@
Änderungen von v1.1 bis v2.0 behandelt die Unterschiede zwischen v1.1 und v2.0.
Alle technischen Einzelheiten zu den Änderungen finden Sie auf GitHub.
+Behoben: Kein Absturz mehr, wenn ein benannter Funktions-Hotkey nach #HotIf verwendet wird.
+Behoben: Direkt geschriebene Zahlen, die mit einem Punkt enden, bewirken keine Zeilenfortsetzung mehr.
+Behoben: Vorherige Inkrementierung/Dekrementierung funktioniert nun auch mit verketteten Array-Indexierungen.
+Behoben: OnNotify/OnCommand wendete Styles an, die nur für OnEvent gelten.
+Behoben: FileExist/DirExist gab Handles nicht frei, wenn LeeresVerz\*
verwendet wird.
Behoben: DirExist gab Handles nicht frei, wenn nur Dateien übereinstimmen.
+Behoben: Stapelung von Hotstrings mit der X-Option.
Behoben: Debugger listet nun lokale Variablen auf, wenn sich die Funktion am Ende des Stapels befindet.
diff --git a/target/docs/Concepts.htm b/target/docs/Concepts.htm index 9a7ad306..63a41e4c 100644 --- a/target/docs/Concepts.htm +++ b/target/docs/Concepts.htm @@ -332,7 +332,7 @@Groß- und Kleinschreibung: Für ASCII-Zeichen nicht relevant. Zum Beispiel ist AktuellesDatum
dasselbe wie aktuellesdatum
. ASCII-fremde Großbuchstaben wie "Ä" sind jedoch nicht identisch mit ihren Kleinbuchstaben, unabhängig von den aktuellen Sprach- und Regionseinstellungen des Benutzers. Das hilft dem Skript, sich über mehrere Sprach- und Regionseinstellungen hinweg konsistent zu verhalten.
Maximale Länge: 253 Zeichen.
Erlaubte Zeichen: Buchstaben, Ziffern, Unterstrich und ASCII-fremde Zeichen; allerdings können nur Eigenschaftsnamen mit einer Ziffer beginnen.
-Reservierte Wörter: as
, and
, contains
, false
, in
, is
, IsSet
, not
, or
, super
, true
, unset
. Diese Wörter sind für zukünftige Anwendungen oder andere spezifische Zwecke reserviert.
Reservierte Wörter: as
, and
, contains
, false
, in
, is
, IsSet
, not
, or
, super
, true
, unset
. Diese Wörter sind für zukünftige oder andere spezifische Zwecke reserviert.
Deklarationsschlüsselwörter und Namen von Kontrollanweisungen sind ebenfalls reserviert, hauptsächlich für die Erkennung von Fehlern. Dazu gehören: Break
, Case
, Catch
, Continue
, Else
, Finally
, For
, Global
, Goto
, If
, Local
, Loop
, Return
, Static
, Switch
, Throw
, Try
, Until
, While
Namen von Eigenschaften, Methoden und Fenstergruppen können reservierte Wörter sein.
diff --git a/target/docs/FAQ.htm b/target/docs/FAQ.htm index 9fcd31b6..3135324e 100644 --- a/target/docs/FAQ.htm +++ b/target/docs/FAQ.htm @@ -84,7 +84,7 @@Dieses Problem gibt es in mehreren Varianten:
Die DateAdd-Funktion kann eine bestimmte Anzahl von Tagen, Stunden, Minuten oder Sekunden im YYYYMMDDHH24MISS-Format addieren oder subtrahieren. Das folgende Beispiel subtrahiert 7 Tage von einer bestimmten Zeit:
-Ergebnis := DateAdd(VariableMitZeitstempel, -7, "days")+
Ergebnis := DateAdd(VarMitZeitstempel, -7, "days")
Um die Zeitmenge zwischen zwei Datums- oder Zeitwerten zu ermitteln, sehen Sie sich das Beispiel in DateDiff an. Die interne Variable A_Now enthält die aktuelle Ortszeit. Des Weiteren gibt es mehrere interne Datum/Zeit-Variablen, sowie die FormatTime-Funktion, um eine benutzerdefinierte Datum/Zeit-Zeichenkette zu erzeugen.
Mit FormatTime oder internen Datum/Zeit-Variablen.
diff --git a/target/docs/Functions.htm b/target/docs/Functions.htm index f27fe0e4..2f12ca60 100644 --- a/target/docs/Functions.htm +++ b/target/docs/Functions.htm @@ -17,6 +17,7 @@Beim Definieren einer Funktion werden ihre Parameter in runden Klammern rechts neben ihrem Namen aufgelistet (zwischen dem Namen und der runden Startklammer sind keine Leerzeichen erlaubt). Wenn die Funktion keine Parameter akzeptiert, kann der Inhalt zwischen den runden Klammern leer gelassen werden, z.B. ErmittleAktuellenZeitstempel()
.
ByRef-Parameter: Innerhalb der Funktion werden Parameter grundsätzlich als lokale Variablen behandelt, es sei denn, sie werden wie im folgenden Beispiel als ByRef markiert:
+Bekannte Einschränkung:
+Var
oder ++Var
oder Var*=2
), können andere Parameter links oder rechts davon diese Variable ändern, bevor sie an die Funktion übergeben wird. Zum Beispiel würde MeineFunk(Var, Var++)
unerwartet 1 und 0 als Parameter übergeben, wenn Var zu Beginn 0 ist, da das erste Var erst bei Ausführung des Funktionsaufrufs dereferenziert wird. Dieses Verhalten ist nicht intuitiv und könnte sich in einer zukünftigen Version ändern.Innerhalb der Funktion werden Parameter grundsätzlich als lokale Variablen behandelt, es sei denn, sie werden wie im folgenden Beispiel als ByRef markiert:
a := 1, b := 2 Tauschen(&a, &b) MsgBox a ',' b @@ -91,8 +98,9 @@Parameter
Bekannte Einschränkungen:
foo.bar
), A_Clipboard oder eine andere interne Variable zu konstruieren, sodass diese nicht via ByRef übergeben werden können.Var
oder ++Var
oder Var*=2
), können andere Parameter links oder rechts davon diese Variable ändern, bevor sie an die Funktion übergeben wird. Zum Beispiel würde MeineFunk(Var, Var++)
unerwartet 1 und 0 als Parameter übergeben, wenn Var zu Beginn 0 ist, da das erste Var erst bei Ausführung des Funktionsaufrufs dereferenziert wird. Dieses Verhalten ist nicht intuitiv und könnte sich in einer zukünftigen Version ändern.&
-Operator zu verwenden).Beim Definieren einer Funktion können beliebig viele Parameter als optional gekennzeichnet werden.
Fügen Sie :=
an, gefolgt von einer direkt geschriebenen Zahl, einer in Anführungszeichen gesetzten Zeichenkette wie "fox" oder "", oder einem Ausdruck, der jedes Mal ausgewertet werden soll, wenn der Parameter mit seinem Standardwert initialisiert werden muss. Zum Beispiel würde X:=[]
jedes Mal ein neues Array erzeugen.
Wert is Klasse
ist True (1), wenn Wert eine Instanz von Klasse ist, andernfalls False (0). Klasse muss eine Instanz der Object-Klasse mit einer eigenen Prototype-Eigenschaft sein, aber in der Regel wird die Eigenschaft implizit via Klassendefinition definiert. Diese Operation ist grundsätzlich äquivalent zu HasBase(Wert, Klasse.Prototype)
.
in
und contains
sind für die zukünftige Verwendung reserviert.
in
und contains
sind für zukünftige Zwecke reserviert.
Eine deutsche Übersetzung von https://www.autohotkey.com/docs/v2/ (siehe hier für mehr Details).
© 2014 Steve Gray, Chris Mallett, zum Teil © AutoIt-Team und andere
Software-Lizenz: GNU General Public License
diff --git a/target/docs/lib/Class.htm b/target/docs/lib/Class.htm index 43ce43b6..a5dc2470 100644 --- a/target/docs/lib/Class.htm +++ b/target/docs/lib/Class.htm @@ -16,9 +16,9 @@class Class extends Object
Ein Class-Objekt repräsentiert eine Klassendefinition; es enthält statische Methoden und Eigenschaften.
-Jedes Klassenobjekt basiert auf dem, was auch immer es erweitert, oder auf Object, wenn es nicht angegeben ist. Das globale Klassenobjekt Object
basiert auf Class.Prototype
, das wiederum auf Object.Prototype
basiert, so dass Klassen beliebige Methoden und Eigenschaften von jedem dieser Basisobjekte erben können.
"Statische" Methoden und Eigenschaften sind alle Methoden und Eigenschaften, die dem Class-Objekt selbst gehören (und daher nicht für eine bestimmte Instanz gelten), während Methoden und Eigenschaften für Instanzen der Klasse dem Prototyp der Klasse gehören.
-"ClassObj" wird hier stellvertretend für ein beliebiges Class-Objekt verwendet, da "Class" die Klasse selbst ist. Normalerweise verweist man auf ein Class-Objekt via Name, der in dessen Klassendefinition angegeben ist.
+Jedes Klassenobjekt basiert auf der Klasse, die es erweitert, oder auf Object, falls nicht angegeben. Das globale Klassenobjekt Object
basiert auf Class.Prototype
, das wiederum auf Object.Prototype
basiert, so dass Klassen Methoden und Eigenschaften von jedem dieser Basisobjekte erben können.
"Statische" Methoden und Eigenschaften sind alle Methoden und Eigenschaften, die dem Klassenobjekt selbst gehören (und daher nicht für eine bestimmte Instanz gelten), während Methoden und Eigenschaften für Instanzen der Klasse dem Prototyp der Klasse gehören.
+"ClassObj" wird hier stellvertretend für ein beliebiges Klassenobjekt verwendet, da "Class" die Klasse selbst ist. Normalerweise wird auf ein Klassenobjekt via Name verwiesen, der in dessen Klassendefinition angegeben ist.
Konstruiert eine neue Instanz der Klasse.
Obj := ClassObj(Params*)
Obj := ClassObj.Call(Params*)
-Diese statische Methode wird typischerweise von der Object-, Array- oder Map-Klasse geerbt. Es führt die folgenden Funktionen aus:
+Diese statische Methode wird typischerweise von der Object-, Array- oder Map-Klasse geerbt. Sie führt die folgenden Funktionen aus:
Call kann innerhalb einer Klassendefinition überschrieben werden, indem eine statische Methode definiert wird, wie z.B. static Call()
. Dadurch können Klassen die Konstruktion neuer Instanzen ändern oder verhindern.
Beachten Sie, dass Class()
(in diesem Fall tatsächlich "Class") verwendet werden kann, um ein neues Class-Objekt basierend auf Class.Prototype
zu erstellen. Dieses neue Objekt hat jedoch zunächst keine Call-Methode, da es keine Unterklasse von Object ist. Um es zu einer Unterklasse von Object zu machen, weisen Sie es dessen Base zu, oder reimplementieren Sie die Call-Methode oder kopieren Sie sie von einer anderen Klasse. Ein Prototyp muss ebenfalls erstellt und der Klasse zugewiesen werden, bevor es mit der Standard-Call-Methode instanziiert werden kann.
Call kann innerhalb einer Klassendefinition durch Definieren einer statischen Methode überschrieben werden, z.B. static Call()
. Auf diese Weise können Klassen die Konstruktion neuer Instanzen ändern oder verhindern.
Beachten Sie, dass Class()
(in diesem Fall tatsächlich "Class") verwendet werden kann, um ein neues Class-Objekt basierend auf Class.Prototype
zu konstruieren. Dieses neue Objekt hat jedoch zunächst keine Call-Methode, da es keine Unterklasse von Object ist. Es kann zu einer Unterklasse von Object durch Zuweisung an Base gemacht werden, oder die Call-Methode kann reimplementiert oder aus einer anderen Klasse kopiert werden. Außerdem muss ein Prototyp erstellt und der Klasse zugewiesen werden, bevor sie mit der Standard-Call-Methode instanziiert werden kann.
Ermittelt oder setzt das Objekt, auf dem alle Instanzen der Klasse basieren.
Proto := ClassObj.Prototype
ClassObj.Prototype := Proto
-Der Prototyp der Klasse enthält standardmäßig alle Instanzmethoden und dynamischen Eigenschaften, die in der Klassendefinition definiert sind, und kann verwendet werden, um Referenzen zu Methoden oder Eigenschaft-Getters/Setters abzurufen oder neue zu definieren. Das Skript kann zudem neue Werteigenschaften definieren, die als Standardeigenschaftswerte für alle Instanzen fungieren.
-Der Protoyp einer Klasse basiert normalerweise auf dem Prototyp ihrer Basisklasse, also gilt ClassObj.Prototype.base == ClassObj.base.Prototype
.
Prototype wird automatisch als eine eigene Eigenschaft eines Class-Objekts, das via Klassendefinition erzeugt wurde, definiert.
+Der Prototyp der Klasse enthält standardmäßig alle Instanzmethoden und dynamischen Eigenschaften, die in der Klassendefinition definiert sind, und kann verwendet werden, um Referenzen zu Methoden oder Getters/Setters von Eigenschaften abzurufen oder neue zu definieren. Das Skript kann zudem neue Werteigenschaften definieren, die als Standardeigenschaftswerte für alle Instanzen dienen.
+Der Prototyp einer Klasse basiert normalerweise auf dem Prototyp ihrer Basisklasse, folglich ist ClassObj.Prototype.base == ClassObj.base.Prototype
.
Prototype wird automatisch als eigene Eigenschaft eines Klassenobjekts, das via Klassendefinition erzeugt wurde, definiert.
diff --git a/target/docs/lib/Click.htm b/target/docs/lib/Click.htm index 0e9f5147..09f5c25a 100644 --- a/target/docs/lib/Click.htm +++ b/target/docs/lib/Click.htm @@ -21,24 +21,24 @@Geben Sie eine oder mehrere der folgenden Komponenten an: Koordinaten, WelcheTaste, KlicksAnzahl, DownOderUp und/oder Relativ. Wenn alle Komponenten weggelassen werden, wird ein einfacher Linksklick auf der aktuellen Position des Mauszeigers ausgeführt.
-Die Komponenten können auf mehrere Parameter verteilt oder in einer oder mehreren Zeichenketten zusammengefasst sein. Jeder Parameter kann entweder eine einzelne numerische Komponente oder eine Zeichenkette mit beliebig vielen Komponenten sein, wobei alle Komponenten durch mindestens ein Leerzeichen, Tabulatorzeichen und/oder Komma (alle innerhalb der Zeichenkette) voneinander getrennt sind. Zum Beispiel ist Click 100, 200, "R D"
äquivalent zu Click "100 200 R D"
und beide sind gültig. Leere oder weggelassene Parameter werden ignoriert, ebenso wie zusätzliche Kommas.
Die Komponenten können auf mehrere Parameter verteilt oder in eine oder mehrere Zeichenketten zusammengefasst werden. Jeder Parameter kann entweder eine einzelne numerische Komponente oder eine Zeichenkette mit beliebig vielen Komponenten sein, wobei alle Komponenten durch mindestens ein Leerzeichen, Tabulatorzeichen und/oder Komma (alle innerhalb der Zeichenkette) voneinander getrennt sein müssen. Zum Beispiel sind Click 100, 200, "R D"
und Click "100 200 R D"
funktionsgleich und gültig. Leere oder weggelassene Parameter werden ignoriert, ebenso wie zusätzliche Kommas.
Warnung: Click 100 200
ist äquivalent zu Click "100200"
, da die beiden Zahlen vor dem Funktionsaufruf verkettet werden.
Die Komponenten können in beliebiger Reihenfolge angegeben werden, außer KlicksAnzahl, das rechts von Koordinaten stehen muss, falls vorhanden.
Koordinaten: Wenn weggelassen, wird die aktuelle Position des Mauszeigers verwendet. Andernfalls geben Sie die X- und Y-Koordinate der Position an, auf die der Mauszeiger vor dem Klicken bewegt werden soll. Zum Beispiel klickt Click "100 200"
mit der linken Maustaste auf eine bestimmte Position. Standardmäßig sind Koordinaten relativ zum Clientbereich des aktiven Fensters, was aber mit CoordMode geändert werden kann.
WelcheTaste: Wenn weggelassen, wird standardmäßig Left verwendet (die linke Maustaste). Andernfalls geben Sie Left, Right, Middle (oder jeweils nur den ersten Buchstaben) oder X1 (vierte Maustaste) oder X2 (fünfte Maustaste) an. Zum Beispiel klickt Click "Right"
mit der rechten Maustaste auf die aktuelle Position des Mauszeigers. Left ist die primäre Maustaste und Right die sekundäre Maustaste. Wenn der Benutzer die Maustasten via Systemsteuerung vertauscht, werden die physischen Positionen der Maustasten vertauscht, aber der Effekt bleibt der gleiche.
WelcheTaste kann auch WheelUp oder WU sein, um das Mausrad nach oben zu drehen (von Ihnen weg), oder WheelDown oder WD, um es nach unten zu drehen (zu Ihnen hin). WheelLeft (WL) oder WheelRight (WR) kann ebenfalls angegeben werden. KlicksAnzahl ist die Anzahl der Schritte, um die das Mausrad gedreht werden soll. Einige Anwendungen ignorieren jedoch einen KlicksAnzahl-Wert höher als 1 in Bezug auf das Mausrad. Verwenden Sie für solche Anwendungen mehrmals die Click-Funktion, z.B. mithilfe einer Schleife.
-KlicksAnzahl: Wenn weggelassen, wird standardmäßig 1 verwendet. Andernfalls geben Sie an, wie oft die Maustaste geklickt oder das Mausrad gedreht werden soll. Zum Beispiel macht Click 2
einen Doppelklick auf der aktuellen Position des Mauszeigers. Wenn Koordinaten angegeben sind, muss KlicksAnzahl nach diesen angegeben werden. Geben Sie eine 0 an, um den Mauszeiger ohne Klicken zu verschieben; zum Beispiel Click "100 200 0"
.
WelcheTaste: Wenn weggelassen, wird standardmäßig Left verwendet (die linke Maustaste). Andernfalls geben Sie Left, Right, Middle (oder jeweils nur den ersten Buchstaben) oder X1 (vierte Maustaste) oder X2 (fünfte Maustaste) an. Zum Beispiel klickt Click "Right"
mit der rechten Maustaste auf die aktuelle Position des Mauszeigers. Left ist die primäre Maustaste und Right die sekundäre Maustaste. Wenn der Benutzer die Maustasten über die Systemsteuerung vertauscht, werden die physischen Positionen der Maustasten vertauscht, aber der Effekt bleibt derselbe.
WelcheTaste kann auch WheelUp oder WU sein, um das Mausrad nach oben zu drehen (von Ihnen weg), oder WheelDown oder WD, um es nach unten zu drehen (zu Ihnen hin). WheelLeft (WL) oder WheelRight (WR) kann ebenfalls angegeben werden. KlicksAnzahl ist die Anzahl der Schritte, um die das Mausrad gedreht werden soll. Einige Anwendungen ignorieren jedoch eine KlicksAnzahl höher als 1 beim Drehen des Mausrads. Für solche Anwendungen können Sie die Click-Funktion mehrfach verwenden, z.B. mit Loop.
+KlicksAnzahl: Wenn weggelassen, wird standardmäßig 1 verwendet. Andernfalls geben Sie an, wie oft die Maustaste geklickt oder das Mausrad gedreht werden soll. Zum Beispiel macht Click 2
einen Doppelklick auf der aktuellen Position des Mauszeigers. Wenn Koordinaten angegeben sind, muss KlicksAnzahl nach diesen angegeben werden. Geben Sie 0 an, um den Mauszeiger ohne Klicken zu bewegen, z.B. Click "100 200 0"
.
DownOderUp: Wenn weggelassen, besteht jeder Klick aus einem Down- und Up-Ereignis. Andernfalls geben Sie das Wort Down (oder den Buchstaben D) an, um die Maustaste dauerhaft nach unten zu drücken. Später kann das Wort Up (oder der Buchstabe U) verwendet werden, um die Maustaste loszulassen. Zum Beispiel drückt Click "Down"
die linke Maustaste nach unten und hält sie gedrückt.
Relativ: Wenn weggelassen, werden die X- und Y-Koordinate für die absolute Positionierung verwendet. Andernfalls geben Sie das Wort Rel oder Relative an, um die X- und Y-Koordinate als Offsets von der aktuellen Mausposition zu behandeln. Mit anderen Worten, der Mauszeiger wird von seiner aktuellen Position aus um X Pixel nach rechts (nach links, wenn negativ) und um Y Pixel nach unten (nach oben, wenn negativ) bewegt.
Die Click-Funktion verwendet den via SendMode gesetzten Send-Modus. Um diesen Modus für einen bestimmten Mausklick zu überschreiben, verwenden Sie eine spezielle Send-Funktion in Kombination mit {Click}, wie z.B.: SendEvent "{Click 100 200}"
.
Die Click-Funktion verwendet den via SendMode gesetzten Send-Modus. Um diesen Modus für einen bestimmten Mausklick zu überschreiben, verwenden Sie eine spezielle Send-Funktion in Kombination mit {Click}, wie zum Beispiel: SendEvent "{Click 100 200}"
.
Zum Erzeugen eines via UMSCHALT oder STRG modifizierten Klicks ist das Klicken via Send generell die einfachste Methode. Zum Beispiel:
Send "+{Click 100 200}" ; UMSCHALT+MAUSTASTE-LINKS Send "^{Click 100 200 Right}" ; STRG+MAUSTASTE-RECHTS-
Im Gegensatz zu Send wird die Click-Funktion die Modifikatortasten (Strg, Alt, Umschalt und Win) nicht automatisch loslassen. Hält man beispielsweise Strg gedrückt, würde Click
einen via STRG modifizierten Klick erzeugen, während Send "{Click}"
einen normalen Klick erzeugen würde.
Im Gegensatz zu Send lässt die Click-Funktion die Modifikatortasten (Strg, Alt, Umschalt und Win) nicht automatisch los. Hält man beispielsweise Strg gedrückt, würde Click
einen via STRG modifizierten Klick erzeugen, während Send "{Click}"
einen normalen Klick erzeugen würde.
Der SendPlay-Modus ist im Gegensatz zu den anderen Modi erfolgreicher darin, Mausereignisse in Videospielen zu erzeugen. Außerdem können einige Anwendungen und Videospiele Schwierigkeiten haben, dem Mauszeiger zu folgen, wenn er zu schnell bewegt wird. In diesem Fall kann SetDefaultMouseSpeed helfen, um die Geschwindigkeit zu verringern (allerdings nur im SendEvent-Modus).
Die BlockInput-Funktion kann verwendet werden, um zu verhindern, dass physische Mausaktivitäten des Benutzers die künstlich erzeugten Mausereignisse stören. Allerdings ist das bei den Modi SendInput und SendPlay nicht notwendig, weil sie die physischen Mausaktivitäten des Benutzers automatisch hinauszögern.
Nach jedem DOWN- und UP-Ereignis eines Mausklicks erfolgt automatisch eine Verzögerung (außer im SendInput-Modus und beim Drehen des Mausrads). Mit SetMouseDelay kann die Verzögerungsdauer geändert werden.
diff --git a/target/docs/lib/ClipWait.htm b/target/docs/lib/ClipWait.htm index d1132712..e5d31f07 100644 --- a/target/docs/lib/ClipWait.htm +++ b/target/docs/lib/ClipWait.htm @@ -41,10 +41,10 @@Diese Funktion gibt 0 (false) zurück, wenn die Funktion das Zeitlimit überschritten hat, andernfalls 1 (true) (also wenn die Zwischenablage Daten enthält).
Es ist besser, diese Funktion zu verwenden, als mit einer eigenen Schleife zu prüfen, ob die Zwischenablage leer ist. Der Vorteil dieser Funktion ist, dass sie nie die Zwischenablage öffnet, was sie performanter macht und die Möglichkeit ausschließt, mit anderen Anwendungen in Konflikt zu geraten, die ebenfalls auf die Zwischenablage zugreifen.
-Diese Funktion behandelt alles, was in Text umgewandelt werden kann (z.B. HTML), als Text. Dateien, die z.B. mit Strg+C innerhalb eines Explorer-Fensters kopiert werden, werden ebenfalls als Text behandelt. Solche Dateien werden jedes Mal, wenn die Clipboard-Variable im Skript abgerufen wird, in ihre Dateinamen umgewandelt (mit vollständigem Pfad). Weitere Informationen finden Sie unter A_Clipboard.
+Es ist besser, diese Funktion zu verwenden, als mit einer eigenen Schleife zu prüfen, ob die Zwischenablage leer ist. Die Funktion hat den Vorteil, dass die Zwischenablage nie geöffnet wird, was die Performanz verbessert und das Risiko von Konflikten mit anderen Anwendungen, die ebenfalls auf die Zwischenablage zugreifen, verringert.
+Diese Funktion behandelt alles, was in Text umgewandelt werden kann (z.B. HTML), als Text. Dateien, die z.B. mit Strg+C innerhalb eines Explorer-Fensters kopiert werden, werden ebenfalls als Text behandelt. Solche Dateien werden automatisch in ihre Dateinamen (mit vollständigem Pfad) umgewandelt, wann immer im Skript auf die Clipboard-Variable zugegriffen wird. Weitere Informationen finden Sie unter A_Clipboard.
Wenn der letzte Parameter 1 ist, wird die Funktion bereits zufriedengestellt, wenn irgendetwas in der Zwischenablage erscheint. Das ist in Verbindung mit ClipboardAll nützlich, um textlose Elemente wie z.B. Bilder zu speichern.
-Während die Funktion im Wartezustand ist, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
+Während die Funktion wartet, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
Erstellt ein Objekt, das alles von der Zwischenablage enthält (z.B. Bilder und Formatierung).
+Erstellt ein Objekt, das alles, was sich in der Zwischenablage befindet, enthält, wie Bilder und Formatierungen.
ClipGesichert := ClipboardAll(Daten, Größe)-
ClipboardAll
selbst ist eine von Buffer
abstammende Klasse.
ClipboardAll
selbst ist eine Klasse, die von Buffer
abgeleitet ist.
Wenn beide Parameter weggelassen werden, wird der aktuelle Inhalt der Zwischenablage abgerufen. Andernfalls geben Sie einen oder beide Parameter an, um ein Objekt zu erstellen, das die angegebenen Binärdaten der Zwischenablage enthält.
@@ -24,29 +24,29 @@Ein Buffer-ähnliches Objekt oder ein reiner Integer, der die Adresse von Binärdaten ist. Die Daten müssen in einem bestimmten Format sein, das in der Regel ein vorheriger Aufruf von ClipboardAll hervorbringt. Schauen Sie sich das Beispiel #2 unten an.
+Ein Buffer-ähnliches Objekt oder ein reiner Integer, der die Adresse der Binärdaten ist. Die Daten müssen in einem bestimmten Format vorliegen, d.h. sie stammen typischerweise von einem früheren Aufruf von ClipboardAll. Siehe Beispiel #2 unten.
Typ: Integer
-Die Anzahl der Bytes, die die Daten enthalten. Dieser Parameter ist optional, wenn Daten ein Objekt ist.
+Die Anzahl der zu verwendeten Bytes. Dies ist optional, wenn Daten ein Objekt ist.
Typ: Objekt
-Diese Funktion gibt ein ClipboardAll-Objekt zurück, das zwei Eigenschaften hat (geerbt von Buffer):
+Diese Funktion gibt ein ClipboardAll-Objekt mit den folgenden zwei Eigenschaften zurück (geerbt von Buffer):
Die interne Variable A_Clipboard spiegelt den aktuellen Inhalt der Windows-Zwischenablage in Textform wider, kann aber einem ClipboardAll-Objekt zugewiesen werden, um ihren Inhalt in die Zwischenablage zurückzuschreiben.
-ClipboardAll wird häufig verwendet, um den aktuellen Inhalt der Zwischenablage zu sichern, damit die Zwischenablage vorübergehend für eine andere Operation verwendet werden kann. Sobald die Operation abgeschlossen wurde, kann der originale Inhalt der Zwischenablage wiederhergestellt werden, wie in Beispiel #1 und Beispiel #2 gezeigt.
+ClipboardAll wird häufig verwendet, um den aktuellen Inhalt der Zwischenablage zu sichern, damit die Zwischenablage vorübergehend für eine andere Operation verwendet werden kann. Nach Abschluss der Operation kann der ursprüngliche Inhalt der Zwischenablage wiederhergestellt werden, wie in Beispiel #1 und Beispiel #2 gezeigt.
Wenn ClipboardAll nicht in der Lage ist, bestimmte Datenobjekte (Formate) aus der Zwischenablage abzurufen, werden diese übersprungen und der Rest wird gespeichert.
Mit ClipWait kann festgestellt werden, wann die Zwischenablage Daten enthält (optional auch Nicht-Text-Daten).
-Die im Objekt enthaltenen Binärdaten bestehen aus mehreren Teilen: Die ersten 4 Bytes enthalten den Formattyp, die nächsten 4 Bytes die Datenblockgröße und zum Schluss den Datenblock des Formats. Wenn die Zwischenablage mehr als ein Format enthält (was fast immer der Fall ist), werden diese drei Elemente wiederholt, bis alle Formate enthalten sind. Anschließend enden die Daten mit einem Formattyp (4 Byte groß), wobei jedoch eine 0 enthalten ist.
+Die im Objekt enthaltenen Binärdaten bestehen aus drei Elementen: Die ersten 4 Bytes enthalten den Formattyp, die nächsten 4 Bytes die Datenblockgröße und der Rest den Datenblock des Formats. Wenn die Zwischenablage mehr als ein Format enthält (was fast immer der Fall ist), werden diese drei Elemente wiederholt, bis alle Formate enthalten sind. Die Daten enden mit einem vier Byte großen Formattyp von 0.
A_Clipboard, ClipWait, OnClipboardChange, #ClipboardTimeout, Buffer
@@ -56,23 +56,23 @@Speichert den Inhalt der Zwischenablage in eine Variable und stellt ihn wieder her.
ClipSicherung := ClipboardAll() ; Zwischenablage in eine beliebige Variable speichern. -; ... hier kann man kurzzeitig die Zwischenablage nutzen, um z.B. schnell eine große Textmenge einzufügen ... -A_Clipboard := ClipSicherung ; Originale Zwischenablage wiederherstellen. Beachten Sie, dass A_Clipboard verwendet wurde (nicht ClipboardAll). +; ... hier die Zwischenablage für etwas anderes verwenden, z.B. schnell eine große Textmenge einfügen ... +A_Clipboard := ClipSicherung ; Originale Zwischenablage wiederherstellen. Beachten Sie die Verwendung von A_Clipboard (nicht ClipboardAll). ClipSicherung := "" ; Speicher freigeben, falls die Zwischenablage sehr groß war.
Speichert den Inhalt der Zwischenablage in eine Datei und stellt ihn wieder her.
-; Option 1: Lösche die Datei, falls vorhanden, und benutze dann FileAppend. +; Option 1: Datei löschen und FileAppend verwenden. FileDelete "Firmenlogo.clip" FileAppend ClipboardAll(), "Firmenlogo.clip" ; Die Dateiendung ist egal. -; Option 2: Benutze FileOpen im Überschreibmodus und File.RawWrite. +; Option 2: FileOpen im Überschreibmodus und File.RawWrite verwenden. ClipDaten := ClipboardAll() FileOpen("Firmenlogo.clip", "w").RawWrite(ClipDaten)Um die Datei später wieder in die Zwischenablage (oder in eine Variable) zu laden, gehen Sie wie folgt vor:
-ClipDaten := FileRead("Firmenlogo.clip", "RAW") ; In diesem Fall gibt FileRead ein Buffer-Objekt zurück. -A_Clipboard := ClipboardAll(ClipDaten) ; Wandelt das Buffer-Objekt in ein ClipboardAll-Objekt um und weist es zu.+ClipDaten := FileRead("Firmenlogo.clip", "RAW") ; In diesem Fall gibt FileRead ein Buffer zurück. +A_Clipboard := ClipboardAll(ClipDaten) ; Wandelt das Buffer in ein ClipboardAll um und weist es zu.
Ruft eine native COM-Interface-Methode über ihre Indexnummer auf.
+Ruft eine native COM-Interface-Methode per Index auf.
Ergebnis := ComCall(Index, ComObj , Typ1, Arg1, Typ2, Arg2, RückgabeTyp)
Typ: Integer
Die nullbasierte Indexnummer der Methode innerhalb der virtuellen Funktionstabelle.
-Index entspricht der Position der Methode innerhalb der ursprünglichen Interface-Definition. Die Microsoft-Dokumentation listet Methoden grundsätzlich in alphabetischer Reihenfolge auf und ist demzufolge nicht zum Ermitteln der Indexnummer geeignet. Um die richtige Indexnummer zu ermitteln, müssen Sie die ursprüngliche Interface-Definition lokalisieren. Dies könnte z.B. in einer Header-Datei oder einer Typenbibliothek sein.
-Es ist wichtig, Methoden zu berücksichtigen, die von übergeordneten Interfaces geerbt wurden. Da alle COM-Interfaces letztlich von IUnknown abgeleitet sind, sind die ersten drei Methoden immer QueryInterface (0), AddRef (1) und Release (2). Zum Beispiel ist IShellItem2 eine Erweiterung von IShellItem, die bei Index 3 beginnt und 5 Methoden enthält, demzufolge ist die erste Methode von IShellItem2 bei Index 8.
-Tipp: COM-Interfaces, die von Microsoft bereitgestellt werden, finden Sie im Internet oder Windows SDK unter "IInterfaceNameVtbl" - zum Beispiel "IUnknownVtbl". Die Microsoft-eigenen Interface-Definitionen werden von dieser Plain-C-Definition der virtuellen Funktionstabelle des Interfaces begleitet, die alle Methoden explizit in der richtigen Reihenfolge auflistet.
+Index entspricht der Position der Methode innerhalb der ursprünglichen Interface-Definition. Die Microsoft-Dokumentation listet Methoden grundsätzlich in alphabetischer Reihenfolge auf und eignet sich daher nicht zur Ermittlung der Indexnummer. Um die richtige Indexnummer zu ermitteln, muss die ursprüngliche Interface-Definition lokalisiert werden. Dies kann z.B. in einer Header-Datei oder einer Typbibliothek sein.
+Es ist wichtig, Methoden zu berücksichtigen, die von übergeordneten Interfaces geerbt wurden. Da alle COM-Interfaces letztlich von IUnknown abgeleitet sind, sind die ersten drei Methoden immer QueryInterface (0), AddRef (1) und Release (2). Zum Beispiel ist IShellItem2 eine Erweiterung von IShellItem, die bei Index 3 beginnt und 5 Methoden enthält, daher ist die erste Methode von IShellItem2 bei Index 8.
+Tipp: Die von Microsoft definierten COM-Interfaces finden Sie im Internet oder Windows SDK unter "IInterfaceNameVtbl" - zum Beispiel "IUnknownVtbl". Die Microsoft-eigenen Interface-Definitionen werden von dieser Plain-C-Definition der virtuellen Funktionstabelle des Interfaces begleitet, die alle Methoden explizit auflistet, in korrekter Reihenfolge.
Die Übergabe einer ungültigen Indexnummer kann zu undefiniertem Verhalten führen, inklusive (aber nicht beschränkt auf) Programmterminierung.
Typ: Integer, ComValue oder Objekt
-Das gewünschte COM-Objekt; also ein COM-Interface-Pointer. Der Pointer-Wert kann direkt übergeben oder innerhalb eines Objekts mit der Ptr
-Eigenschaft gekapselt werden, wie z.B. ein ComValue mit dem Variantentyp VT_UNKNOWN.
Der Interface-Pointer dient zum Lokalisieren der Adresse der virtuellen Funktion, die die Interface-Methode implementiert, und wird auch als Parameter übergeben. Diesen Parameter findet man grundsätzlich nicht in Sprachen, die von sich aus Interfaces unterstützen, allerdings wird er in der C-Style-"Vtbl"-Definition angezeigt.
+Das gewünschte COM-Objekt; also ein COM-Interface-Pointer. Der Pointer-Wert kann direkt übergeben werden oder innerhalb eines Objekts mit der Ptr
-Eigenschaft gekapselt sein, wie z.B. ein ComValue mit dem Variantentyp VT_UNKNOWN.
Der Interface-Pointer dient zur Lokalisierung der Adresse der virtuellen Funktion, die die Interface-Methode implementiert, und wird auch als Parameter übergeben. Dieser Parameter ist grundsätzlich nicht explizit in Sprachen enthalten, die Interfaces nativ unterstützen, wird aber in der C-Style-Definition "Vtbl" angezeigt.
Die Übergabe eines ungültigen Pointers kann zu undefiniertem Verhalten führen, inklusive (aber nicht beschränkt auf) Programmterminierung.
Typ: Zeichenkette
-Wenn weggelassen, wird standardmäßig HRESULT verwendet, was der häufigste Rückgabetyp für COM-Interface-Methoden ist. Jedes Ergebnis, das auf einen Fehler hinweist, führt dazu, dass ein OSError ausgelöst wird; daher darf der Rückgabetyp nur weggelassen werden, wenn der eigentliche Rückgabetyp HRESULT ist.
-Wenn die Methode vom Typ ist, der keinen Wert zurückgibt (der Rückgabetyp void
in C), können Sie "Int" oder einen anderen numerischen Typ ohne Suffix (außer HRESULT) angeben und den Rückgabewert ignorieren. Da der Inhalt des Rückgabewertregisters in solchen Fällen willkürlich ist, wird eventuell eine Ausnahme ausgelöst, wenn RückgabeTyp weggelassen wird.
Wenn weggelassen, wird standardmäßig HRESULT verwendet, was der häufigste Rückgabetyp für COM-Interface-Methoden ist. Jedes Ergebnis, das auf einen Fehler hinweist, bewirkt, dass ein OSError ausgelöst wird, daher darf der Rückgabetyp nur weggelassen werden, wenn der tatsächliche Rückgabetyp HRESULT ist.
+Wenn die Methode vom Typ ist, der keinen Wert zurückgibt (der Rückgabetyp void
in C), können Sie "Int" oder einen anderen numerischen Typ ohne Suffix (außer HRESULT) angeben und den Rückgabewert ignorieren. Da der Inhalt des Rückgabewertregisters in diesem Fall willkürlich ist, kann durch Weglassen von RückgabeTyp eine Ausnahme ausgelöst werden.
Andernfalls geben Sie einen der Argumenttypen aus der DllCall-Typentabelle an. Das Sternchen-Suffix wird ebenfalls unterstützt.
-Obwohl ComCall das Schlüsselwort Cdecl gemäß DllCall unterstützt, wird es in der Regel nicht von COM-Interface-Methoden verwendet.
+Obwohl ComCall das Schlüsselwort Cdecl gemäß DllCall unterstützt, wird es grundsätzlich nicht von COM-Interface-Methoden verwendet.
Entfernt für 3 Sekunden das aktive Fenster aus der Taskleiste. Vergleichen Sie dies mit dem äquivalenten DllCall-Beispiel.
+Entfernt das aktive Fenster für 3 Sekunden aus der Taskleiste. Äquivalent zum DllCall-Beispiel.
/* Methoden in der ITaskbarList-VTable: IUnknown: @@ -94,7 +94,7 @@Beispiele
IID_ITaskbarList := "{56FDF342-FD6D-11d0-958A-006097C9A090}" CLSID_TaskbarList := "{56FDF344-FD6D-11d0-958A-006097C9A090}" -; Erstellt das TaskbarList-Objekt. +; Das TaskbarList-Objekt erstellen. tbl := ComObject(CLSID_TaskbarList, IID_ITaskbarList) activeHwnd := WinExist("A") @@ -104,14 +104,14 @@Beispiele
Sleep 3000 ComCall(4, tbl, "ptr", activeHwnd) ; tbl.AddTab(activeHwnd) -; Wenn mit dem Objekt fertig, ersetze einfach alle Referenzen mit -; einem anderen Wert (oder wenn es sich um eine lokale Variable handelt, einfach return): +; Wenn das Objekt nicht mehr benötigt wird, einfach alle Referenzen mit +; einem anderen Wert ersetzen (oder return bei einer lokalen Variable): tbl := ""
Demonstriert einige Techniken zum Wrappen von COM-Interfaces. Äquivalent zum vorherigen Beispiel.
+Zeigt einige Techniken zum Wrappen von COM-Interfaces. Äquivalent zum vorherigen Beispiel.
tbl := TaskbarList() @@ -130,20 +130,20 @@Beispiele
; Wird beim Start aufgerufen, um die Klasse zu initialisieren. static __new() { - ; Ermittelt das Basisobjekt für alle Instanzen der TaskbarList. + ; Basisobjekt für alle Instanzen von TaskbarList abrufen. proto := this.Prototype - ; Bound-Funktionen können verwendet werden, um Parameter vorab zu definieren, - ; was die Methoden benutzerfreundlicher macht, ohne dass Wrapper-Funktionen erforderlich sind. + ; Mit Bound-Funktionen können Parameter vordefiniert werden, wodurch die + ; Methoden besser nutzbar werden, ohne Hilfe von Wrapper-Funktionen. ; HrInit selbst hat keine Parameter, also nur den Index binden, - ; und der Aufrufer wird implizit 'this' bereitstellen. + ; und der Aufrufer wird implizit 'this' übergeben. proto.HrInit := ComCall.Bind(3) - ; Lassen Sie einen Parameter leer, damit der Aufrufer einen Wert bereitstellen kann. - ; In diesem Fall ist der leere Parameter 'this' (normalerweise versteckt). + ; Parameter leer lassen, um den Aufrufer einen Wert übergeben zu lassen. + ; In diesem Fall ist der leere Parameter 'this' (i.d.R. versteckt). proto.AddTab := ComCall.Bind(4,, "ptr") - ; Ein Object- oder Map-Objekt kann verwendet werden, um Wiederholungen zu reduzieren. + ; Mit Object oder Map können Wiederholungen reduziert werden. for name, args in Map( "DeleteTab", [5,,"ptr"], "ActivateTab", [6,,"ptr"], @@ -156,7 +156,7 @@Beispiele
__new() { this.comobj := ComObject(TaskbarList.CLSID, TaskbarList.IID) this.ptr := this.comobj.ptr - ; Initialisierung über ITaskbarList anfordern. + ; Initialisierung via ITaskbarList anfordern. this.HrInit() } } diff --git a/target/docs/lib/ComObjActive.htm b/target/docs/lib/ComObjActive.htm index d422e009..0b56f19c 100644 --- a/target/docs/lib/ComObjActive.htm +++ b/target/docs/lib/ComObjActive.htm @@ -39,11 +39,11 @@Siehe auch
Beispiele
-diff --git a/target/docs/lib/ComObjArray.htm b/target/docs/lib/ComObjArray.htm index 57d16ca9..b16759b8 100644 --- a/target/docs/lib/ComObjArray.htm +++ b/target/docs/lib/ComObjArray.htm @@ -16,7 +16,7 @@Zeigt das aktive Dokument in Microsoft Word an, sofern das Programm läuft. Einzelheiten über das hier verwendete COM-Objekt und dessen Eigenschaften finden Sie unter Word.Application object (Microsoft Docs).
+Zeigt das aktive Dokument in Microsoft Word an, wenn es gerade läuft. Details zum hier verwendeten COM-Objekt und dessen Eigenschaften finden Sie unter Word.Application object (Microsoft Docs).
word := ComObjActive("Word.Application") if !word - MsgBox "Word ist nicht offen." + MsgBox "Word ist nicht geöffnet." else MsgBox word.ActiveDocument.FullNameComObjArray
Erstellt ein SafeArray, das für COM verwendet werden kann.
ArrayObj := ComObjArray(VarTyp, Anzahl1 , Anzahl2, ... Anzahl8)-+
ComObjArray
selbst ist eine vonComValue
abstammende Klasse, wird aber nur zum Erstellen oder Identifizieren von SafeArray-Wrapper-Objekten verwendet.
ComObjArray
selbst ist eine Klasse, die vonComValue
abgeleitet ist, aber nur zum Erstellen oder Identifizieren von SafeArray-Wrapper-Objekten verwendet wird.Parameter
Typ: Integer
Der Basistyp des Arrays (der VARTYPE jedes Array-Elements). Der VARTYPE ist auf eine Teilmenge der Variantentypen beschränkt. Weder das VT_ARRAY- noch das VT_BYREF-Flag können gesetzt werden. VT_EMPTY und VT_NULL sind keine gültigen Basistypen für das Array. Alle anderen Typen sind zulässig. -Eine Liste möglicher Werte finden Sie unter ComObjType().
+Eine Liste möglicher Werte finden Sie unter ComObjType.
Diese Funktion gibt ein Wrapper-Objekt zurück, das ein neues SafeArray enthält.
ComObjArray-Objekte unterstützen folgende Methoden:
+ComObjArray-Objekte unterstützen die folgenden Methoden:
.MaxIndex(n)
: Gibt die Obergrenze der n-ten Dimension zurück. Wenn n weggelassen wird, wird standardmäßig 1 verwendet..MinIndex(n)
: Gibt die Untergrenze der n-ten Dimension zurück. Wenn n weggelassen wird, wird standardmäßig 1 verwendet..Clone()
: Gibt eine Kopie des Arrays zurück..__Enum()
: Wird üblicherweise nicht vom Skript aufgerufen; ermöglicht es, For-Schleifen in Kombination mit SafeArrays zu verwenden..__Enum()
: Wird üblicherweise nicht via Skript aufgerufen; ermöglicht die Nutzung von For-Schleifen mit SafeArrays.Diese sind derzeit hartkodiert; sie existieren nicht als Eigenschaften und werden von Änderungen an ComObjArray.Prototype
nicht beeinflusst.
Diese sind derzeit hartkodiert; sie existieren nicht als Eigenschaften und werden nicht durch Änderungen an ComObjArray.Prototype
beeinflusst.
ComObjArray-Objekte können auch von COM-Methoden und ComValue zurückgegeben werden. Skripte können wie folgt prüfen, ob ein Wert ein ComObjArray ist:
@@ -58,13 +58,13 @@Es werden Arrays mit bis zu 8 Dimensionen unterstützt.
Da SafeArrays nicht für die Unterstützung von Mehrfachreferenzen ausgelegt sind, wird beim Zuweisen eines SafeArrays an ein Element eines anderen SafeArrays eine separate Kopie erstellt. Dies geschieht jedoch nur, wenn das Wrapper-Objekt das F_OWNVALUE-Flag hat, um zu kennzeichnen, dass es für die Zerstörung des Arrays verantwortlich ist. Dieses Flag kann mit ComObjFlags entfernt werden.
Wenn eine via COM-Client aufgerufene Funktion oder Methode ein SafeArray mit dem F_OWNVALUE-Flag zurückgibt, wird eine Kopie erstellt und stattdessen zurückgegeben, da das originale SafeArray automatisch zerstört wird.
diff --git a/target/docs/lib/ComObjConnect.htm b/target/docs/lib/ComObjConnect.htm index 2cdfc2ab..36d1c771 100644 --- a/target/docs/lib/ComObjConnect.htm +++ b/target/docs/lib/ComObjConnect.htm @@ -22,28 +22,28 @@Typ: ComObject
Ein Objekt, das Ereignisse auslöst.
-Wenn das Objekt das IConnectionPointContainer-Interface nicht unterstützt oder wenn Typinformationen über die Klasse des Objekts nicht abgerufen werden können, wird eine Fehlermeldung angezeigt. Mit Try/Catch kann dies unterdrückt oder kontrolliert werden.
+Wenn das Objekt das IConnectionPointContainer-Interface nicht unterstützt oder wenn Typinformationen über die Klasse des Objekts nicht abgerufen werden können, wird eine Fehlermeldung angezeigt. Diese Fehlermeldung kann mit Try/Catch unterdrückt oder behandelt werden.
Das IProvideClassInfo-Interface wird verwendet, um Typinformationen über die Klasse des Objekts abzurufen, sofern es vom Objekt unterstützt wird. Andernfalls versucht ComObjConnect, die Typinformationen via IDispatch-Interface des Objekts abzurufen, was unzuverlässig sein kann.
Typ: Zeichenkette oder Objekt
-Wenn weggelassen, wird die Verbindung zu diesem Objekt getrennt, d.h. das Skript erhält keine Benachrichtigungen von seinen Ereignissen mehr. Andernfalls geben Sie eine Zeichenkette an, die dem Ereignisnamen vorangestellt wird, um zu bestimmen, welche globale Funktion aufgerufen werden soll, wenn ein Ereignis stattfindet, oder ein Event-Sink-Objekt, das eine statische Methode für jedes zu behandelnde Ereignis definiert.
-Hinweis: Verschachtelte Funktionen werden in diesem Modus nicht unterstützt, da Namen erst nach Rückkehr der aktuellen Funktion aufgelöst werden können. Um verschachtelte Funktionen oder Closures zu nutzen, verbinden Sie diese mit einem Objekt und übergeben Sie das Objekt wie unten beschrieben.
+Wenn weggelassen, wird die Verbindung zum Objekt getrennt, d.h. das Skript erhält keine Benachrichtigungen von seinen Ereignissen mehr. Andernfalls geben Sie eine Zeichenkette an, die dem Ereignisnamen vorangestellt wird, um zu bestimmen, welche globale Funktion aufgerufen werden soll, wenn ein Ereignis stattfindet, oder ein Event-Sink-Objekt, das eine statische Methode für jedes zu behandelnde Ereignis definiert.
+Hinweis: Verschachtelte Funktionen werden in diesem Modus nicht unterstützt, da Namen erst nach Rückkehr der aktuellen Funktion aufgelöst werden können. Um verschachtelte Funktionen oder Closures zu verwenden, binden Sie diese an ein Objekt und übergeben Sie das Objekt wie unten beschrieben.
Um ComObjConnect effektiv nutzen zu können, müssen Sie zunächst Funktionen in das Skript schreiben, die die entsprechenden Ereignisse behandeln können. Solche Funktionen, auch "Ereignishandler" genannt, haben die folgende Struktur:
-PräfixEreignisname([Params..., ComObj]) +PräfixEreignisName([Params..., ComObj]) { ... ereignisbehandelnder Code ... return RückgabeWert }Präfix sollte identisch mit dem PräfixOderSink-Parameter sein, wenn es eine Zeichenkette ist, andernfalls sollte es weggelassen werden. EreignisName sollte mit dem Namen des Ereignisses ersetzt werden, das von der Funktion behandelt werden soll.
-Params entspricht den Parametern, die das Ereignis hat. Wenn das Ereignis keine Parameter hat, sollte Params ganz weggelassen werden. ComObj ist ein zusätzlicher Parameter, der eine Referenz zum ursprünglichen Wrapper-Objekt, das an ComObjConnect übergeben wurde, enthält; dieser Parameter wird in der Dokumentation des COM-Ereignisses nie erwähnt. "ComObj" sollte mit einem Namen ersetzt werden, der eher dem Kontext Ihres Skripts entspricht.
+Params entspricht den Parametern, die das Ereignis hat. Wenn das Ereignis keine Parameter hat, sollte Params ganz weggelassen werden. ComObj ist ein zusätzlicher Parameter, der eine Referenz zum ursprünglichen Wrapper-Objekt enthält, das an ComObjConnect übergeben wurde; dieser Parameter wird in der Dokumentation des COM-Ereignisses nie erwähnt. "ComObj" sollte mit einem Namen ersetzt werden, der besser zum Kontext Ihres Skripts passt.
Beachten Sie, dass Ereignishandler Rückgabewerte haben können. Mit ComValue kann ein COM-spezifischer Wertetyp zurückgegeben werden. Zum Beispiel gibt
return ComValue(0,0)
eine Variante des Typs VT_EMPTY zurück, was dasselbe ist wie, als würde eine JavaScript-Funktionundefined
(oder gar nichts) zurückgeben.Mit
ComObjConnect(MeinObjekt, "Präfix")
kann die Ereignisbehandlung aktiviert werden.Rufen Sie
@@ -53,11 +53,11 @@ComObjConnect(MeinObjekt)
auf, um die Verbindung zum Objekt zu trennen (Ereignisbehandlungen zu stoppen).Event-Sink
Wenn PräfixOderSink ein Objekt ist, wird jedes Mal, wenn ein Ereignis ausgelöst wird, die entsprechende Methode dieses Objekts aufgerufen. Obwohl das Objekt dynamisch konstruiert werden kann, ist es für PräfixOderSink typischer, auf eine Klasse oder eine Instanz einer Klasse zu verweisen. In diesem Fall werden die Methoden wie oben definiert, jedoch ohne Präfix.
Wie bei jedem Methodenaufruf enthält der (normalerweise versteckte)
this
-Parameter der Methode eine Referenz zum Objekt, über das die Methode aufgerufen wurde; also das Event-Sink-Objekt, nicht das COM-Objekt. Dies kann verwendet werden, um den Ereignishandlern Kontext bereitzustellen oder um Werte zwischen ihnen auszutauschen.Um alle Ereignisse abzufangen, ohne für jedes einzelne eine Methode zu definieren, definieren Sie eine __Call-Metafunktion.
-ComObject gibt seine Referenz zu PräfixOderSink automatisch frei, wenn das COM-Objekt die Verbindung freigibt. Das passiert zum Beispiel, wenn der Internet Explorer beendet wird. Wenn das Skript seine eigene Referenz zu PräfixOderSink nicht beibehält, kann es __Delete nutzen, um zu erkennen, wann dies geschieht. Wenn das Objekt von einem Remote-Prozess gehostet wird und der Prozess unerwartet terminiert wird, kann es mehrere Minuten dauern, bis das System die Verbindung freigibt.
+ComObject gibt seine Referenz zu PräfixOderSink automatisch frei, wenn das COM-Objekt die Verbindung freigibt. Das passiert zum Beispiel, wenn der Internet Explorer beendet wird. Wenn das Skript seine eigene Referenz zu PräfixOderSink nicht beibehält, kann es __Delete verwenden, um zu erkennen, wann dies geschieht. Wenn das Objekt von einem Remote-Prozess gehostet wird und der Prozess unerwartet terminiert wird, kann es mehrere Minuten dauern, bis das System die Verbindung freigibt.
Bemerkungen
-Das Skript muss eine Referenz zu ComObj behalten, da ComObject sonst automatisch freigegeben und von dessen COM-Objekt getrennt werden würde, wodurch die Erkennung weiterer Ereignisse verhindert wird. Es gibt keine Standardmethode, um zu erkennen, wann die Verbindung nicht mehr benötigt wird, daher muss das Skript die Verbindung manuell trennen, indem es ComObjConnect aufruft.
-Die Persistent-Funktion ist eventuell vonnöten, um das Skript am Laufen zu halten, während es auf Ereignisse wartet.
+Das Skript muss eine Referenz zu ComObj behalten, andernfalls würde es automatisch freigegeben und die Verbindung zu seinem COM-Objekt trennen, was verhindert, dass weitere Ereignisse erkannt werden. Es gibt keine Standardmethode, um zu erkennen, wann die Verbindung nicht mehr benötigt wird, daher muss das Skript die Verbindung manuell trennen, indem es ComObjConnect aufruft.
+Möglicherweise ist die Persistent-Funktion erforderlich, um das Skript am Laufen zu halten, während es auf Ereignisse wartet.
Bei Misserfolg wird eine Ausnahme ausgelöst.
Siehe auch
diff --git a/target/docs/lib/ComObjFlags.htm b/target/docs/lib/ComObjFlags.htm index 70d7ba3e..3053c447 100644 --- a/target/docs/lib/ComObjFlags.htm +++ b/target/docs/lib/ComObjFlags.htm @@ -56,14 +56,14 @@Flags
1 F_OWNVALUE
-SafeArray: Wenn das Flag gesetzt ist, wird das SafeArray bei Freigabe des Wrapper-Objekts zerstört. Da SafeArrays keinen Mechanismus zum Zählen von Referenzen haben, wird, wenn ein SafeArray mit diesem Flag einem Element eines anderen SafeArrays zugewiesen wird, eine separate Kopie erstellt.
-BSTR: Wenn das Flag gesetzt ist, wird der BSTR bei Freigabe des Wrapper-Objekts freigegeben. Das Flag wird automatisch gesetzt, wenn ein BSTR als Ergebnis einer Typenumwandlung, die von ComValue durchgeführt wurde, reserviert wird, wie z.B. bei
+ComValue(8, "Beispiel")
.SafeArray: Wenn das Flag gesetzt ist, wird das SafeArray beim Freigeben des Wrapper-Objekts zerstört. Da SafeArrays keinen Mechanismus zum Zählen von Referenzen haben, wird, wenn ein SafeArray mit diesem Flag einem Element eines anderen SafeArrays zugewiesen wird, eine separate Kopie erstellt.
+BSTR: Wenn das Flag gesetzt ist, wird der BSTR beim Freigeben des Wrapper-Objekts freigegeben. Das Flag wird automatisch gesetzt, wenn ein BSTR als Ergebnis einer Typenumwandlung, die von ComValue durchgeführt wurde, reserviert wird, z.B.
ComValue(8, "Beispiel")
.
Wenn Maske weggelassen wird, können Flags via NeueFlags hinzugefügt (falls positiv) oder entfernt (falls negativ) werden. Zum Beispiel entfernt ComObjFlags(obj, -1)
das F_OWNVALUE-Flag. Geben Sie für Maske keinen anderen Wert als 0 oder 1 an; alle anderen Bits sind für zukünftige Verwendung reserviert.
Wenn Maske weggelassen wird, können Flags via NeueFlags hinzugefügt (falls positiv) oder entfernt (falls negativ) werden. Zum Beispiel entfernt ComObjFlags(obj, -1)
das F_OWNVALUE-Flag. Geben Sie für Maske keinen anderen Wert als 0 oder 1 an; alle anderen Bits sind für zukünftige Zwecke reserviert.
ComValue, ComObjActive, ComObjArray
diff --git a/target/docs/lib/ComObjFromPtr.htm b/target/docs/lib/ComObjFromPtr.htm index d4b3082d..e7aa3ea3 100644 --- a/target/docs/lib/ComObjFromPtr.htm +++ b/target/docs/lib/ComObjFromPtr.htm @@ -2,7 +2,7 @@Wrappt einen rohen IDispatch-Interface-Pointer (COM-Objekt), um ihn für das Skript nutzbar zu machen.
+Wrappt einen rohen IDispatch-Interface-Pointer (COM-Objekt), damit er vom Skript verwendet werden kann.
ComObj := ComObjFromPtr(DispPtr)
Typ: ComObject
Gibt ein Wrapper-Objekt zurück, das den Variantentyp VT_DISPATCH und den angegebenen Pointer enthält.
-Ein Skript kann deutlich besser mit einem COM-Objekt interagieren (via Objektsyntax), wenn es gewrappt wurde. Die meisten Skripte müssen dies nicht manuell tun, weil ComObject, ComObjActive, ComObjGet und andere COM-Methoden, die ein Objekt zurückgeben, automatisch ein Wrapper-Objekt erstellen.
+Das Wrappen eines COM-Objekts ermöglicht dem Skript eine natürlichere Interaktion mit diesem mittels Objektsyntax. Die meisten Skripte müssen dies jedoch nicht manuell tun, da ComObject, ComObjActive, ComObjGet und andere COM-Methoden, die ein Objekt zurückgeben, automatisch ein Wrapper-Objekt erstellen.
Das Wrapper-Objekt übernimmt die Verantwortung für die automatische Freigabe des Pointers, falls erforderlich. Diese Funktion versucht, das IDispatch-Interface des Objekts anzufordern; bei Erfolg wird DispPtr sofort freigegeben. Wenn das Skript also beabsichtigt, den Pointer nach dem Aufruf dieser Funktion weiter zu verwenden, muss es zuerst ObjAddRef(DispPtr)
aufrufen.
Bekannte Einschränkung: Jedes Mal, wenn ein COM-Objekt gewrappt wird, wird ein neues Wrapper-Objekt erstellt. Bei Vergleichen und Zuweisungen wie obj1 == obj2
und array[obj1] := Wert
werden beide Wrapper-Objekte nicht als identisch angesehen, sogar dann, wenn sie das gleiche COM-Objekt enthalten.
Das Wrapper-Objekt übernimmt die Verantwortung für die automatische Freigabe des Pointers, falls erforderlich. Diese Funktion versucht, das IDispatch-Interface des Objekts anzufordern; bei Erfolg wird DispPtr sofort freigegeben. Wenn das Skript also den Pointer nach dem Aufruf dieser Funktion weiter verwenden will, muss es zuerst ObjAddRef(DispPtr)
aufrufen.
Bekannte Einschränkung: Jedes Mal, wenn ein COM-Objekt gewrappt wird, wird ein neues Wrapper-Objekt erstellt. Vergleiche und Zuweisungen wie obj1 == obj2
und arr[obj1] := Wert
behandeln die beiden Wrapper-Objekte als nicht identisch, auch wenn sie dasselbe COM-Objekt enthalten.
ComObject, ComValue, ComObjGet, ComObjConnect, ComObjFlags, ObjAddRef/ObjRelease, ComObjQuery, GetActiveObject (Microsoft Docs)
diff --git a/target/docs/lib/ComObjQuery.htm b/target/docs/lib/ComObjQuery.htm index da7674ad..b0fb6c59 100644 --- a/target/docs/lib/ComObjQuery.htm +++ b/target/docs/lib/ComObjQuery.htm @@ -54,7 +54,7 @@ComValue
Ptr
-Eigenschaft zur Verfügung, mit der das Objekt an DllCall oder ComCall übergeben werden kann.Ptr
-Eigenschaft bereit, mit der das Objekt an DllCall oder ComCall übergeben werden kann.In den meisten Fällen werden Werte, die von einer Methode oder Eigenschaft eines COM-Objekts zurückgegeben werden, in einen für AutoHotkey geeigneten Datentyp umgewandelt. Unbehandelte Typen werden via VariantChangeType in Zeichenketten gezwängt; wenn das fehlschlägt oder der Variantentyp das VT_ARRAY- oder VT_BYREF-Flag enthält, wird stattdessen ein Objekt zurückgegeben, das sowohl den Wert als auch dessen Typ enthält.
Wenn ComObjType(x)
einen Integer zurückgibt, enthält x einen COM-Objekt-Wrapper.
Wenn InfoTyp "Name"
oder "IID"
ist, wird die Typinformation über die Interface-Methode IDispatch::GetTypeInfo abgerufen. Der Variantentyp von ComObj muss VT_DISPATCH sein.
Wenn InfoTyp "Class"
oder "CLSID"
ist, wird die Typinformation über die Interface-Methode IProvideClassInfo::GetClassInfo abgerufen. Der Variantentyp von ComObj muss VT_DISPATCH oder VT_UNKNOWN sein, und das Objekt muss das IProvideClassInfo-Interface implementieren (einige Objekte tun es nicht).
Wenn InfoTyp "Class"
oder "CLSID"
ist, wird die Typinformation über die Interface-Methode IProvideClassInfo::GetClassInfo abgerufen. Der Variantentyp von ComObj muss VT_DISPATCH oder VT_UNKNOWN sein, und das Objekt muss das IProvideClassInfo-Interface implementieren (einige Objekte tun das nicht).
ComObjValue, ComValue, ComObject, ComObjGet, ComObjActive
diff --git a/target/docs/lib/ComObjValue.htm b/target/docs/lib/ComObjValue.htm index 5e37f51b..1b38ab47 100644 --- a/target/docs/lib/ComObjValue.htm +++ b/target/docs/lib/ComObjValue.htm @@ -37,7 +37,7 @@Diese Funktion ist nicht für den allgemeinen Gebrauch gedacht.
-Der Aufruf von ComObjValue ist äquivalent zu variant.llVal
, wo ComObj als VARIANT-Struktur behandelt wird. Jedes Skript, das diese Funktion verwendet, muss darauf achten, welchen Wertetyp das Wrapper-Objekt enthält und wie es behandelt werden soll. Wenn zum Beispiel ein Interface-Pointer zurückgegeben wird, sollte Release nicht aufgerufen werden, aber AddRef könnte erforderlich sein, je nachdem, was das Skript mit dem Pointer macht.
Der Aufruf von ComObjValue ist äquivalent zu variant.llVal
, wobei ComObj als VARIANT-Struktur behandelt wird. Jedes Skript, das diese Funktion verwendet, muss darauf achten, welchen Wertetyp das Wrapper-Objekt enthält und wie es behandelt werden soll. Wenn zum Beispiel ein Interface-Pointer zurückgegeben wird, sollte Release nicht aufgerufen werden, aber AddRef könnte erforderlich sein, je nachdem, was das Skript mit dem Pointer macht.
ComObjType, ComObject, ComObjGet, ComObjActive
diff --git a/target/docs/lib/ComObject.htm b/target/docs/lib/ComObject.htm index b2996dd6..a7fbce77 100644 --- a/target/docs/lib/ComObject.htm +++ b/target/docs/lib/ComObject.htm @@ -15,7 +15,7 @@Erstellt ein COM-Objekt.
ComObj := ComObject(CLSID , IID)-
ComObject
selbst ist eine von ComValue
abstammende Klasse, wird aber nur zum Erstellen oder Identifizieren von COM-Objekten verwendet.
ComObject
selbst ist eine Klasse, die von ComValue
abgeleitet ist, aber nur zum Erstellen oder Identifizieren von COM-Objekten verwendet wird.
Typ: Zeichenkette
-Ein Interface-Identifikator, der zurückgegeben werden soll. In den meisten Fällen wird dieser Parameter weggelassen; wenn weggelassen, wird standardmäßig "{00020400-0000-0000-C000-000000000046}"
(IID_IDispatch) verwendet.
Wenn weggelassen, wird standardmäßig "{00020400-0000-0000-C000-000000000046}"
(IID_IDispatch) verwendet. Andernfalls geben Sie den Identifikator eines Interfaces an, das zurückgegeben werden soll. In den meisten Fällen wird dies weggelassen.
ComValue
Ptr
-Eigenschaft zur Verfügung, mit der das Objekt an DllCall oder ComCall übergeben werden kann.Ptr
-Eigenschaft bereit, mit der das Objekt an DllCall oder ComCall übergeben werden kann.Bei Misserfolg wird eine Ausnahme ausgelöst, z.B. wenn ein Parameter ungültig ist oder das Objekt nicht das via IID spezifizierte Interface unterstützt.
+Bei Misserfolg wird eine Ausnahme ausgelöst, z.B. wenn ein Parameter ungültig ist oder das Objekt nicht das angegebene Interface in IID unterstützt.
ComValue, ComObjGet, ComObjActive, ComObjConnect, ComObjArray, ComObjQuery, ComCall, CreateObject (Microsoft Docs)
@@ -69,7 +69,7 @@Ermittelt den Pfad des aktuellen Desktophintergrunds (Wallpaper).
+Ruft den Pfad des aktuellen Hintergrundbildes (Wallpaper) auf dem Desktop ab.
AD_GETWP_BMP := 0 AD_GETWP_LAST_APPLIED := 0x00000002 diff --git a/target/docs/lib/ComValue.htm b/target/docs/lib/ComValue.htm index 4b1249f5..3ab819a3 100644 --- a/target/docs/lib/ComValue.htm +++ b/target/docs/lib/ComValue.htm @@ -2,7 +2,7 @@ComValue - Syntax & Verwendung | AutoHotkey v2 - + @@ -14,9 +14,9 @@ComValue
-Wrappt ein Wert, SafeArray oder COM-Objekt, um es für das Skript oder für eine COM-Methode nutzbar zu machen.
+Wrappt einen Wert, ein SafeArray oder ein COM-Objekt, damit er/es vom Skript verwendet oder an eine COM-Methode übergeben werden kann.
ComObj := ComValue(VarTyp, Wert , Flags)-+
ComValue
selbst ist eine vonAny
abstammende Klasse, wird aber nur zum Erstellen oder Identifizieren von COM-Wrapper-Objekten verwendet.
ComValue
selbst ist eine Klasse, die vonAny
abgeleitet ist, aber nur zum Erstellen oder Identifizieren von COM-Wrapper-Objekten verwendet wird.Parameter
Ein Wert, der gewrappt werden soll.
-Handelt es sich hierbei um einen reinen Integer und ist VarTyp weder VT_R4, VT_R8, VT_DATE noch VT_CY, wird dessen Wert direkt verwendet; insbesondere können VT_BSTR, VT_DISPATCH und VT_UNKNOWN mit einem Pointer-Wert initialisiert werden.
-In allen anderen Fällen wird der Wert in eine temporäre VARIANT kopiert, unter Nutzung der gleichen Regeln wie bei normalen COM-Methodenaufrufen. Wenn der Typ der ursprünglichen Variante ungleich VarTyp ist, wird die Konvertierung durch Aufrufen von VariantChangeType mit einem wFlags-Wert von 0 versucht. Es wird eine Ausnahme ausgelöst, wenn die Konvertierung scheitert.
+Wenn dies ein reiner Integer ist und wenn VarTyp nicht VT_R4, VT_R8, VT_DATE oder VT_CY ist, wird dessen Wert direkt verwendet; insbesondere können VT_BSTR, VT_DISPATCH und VT_UNKNOWN mit einem Pointer-Wert initialisiert werden.
+In allen anderen Fällen wird der Wert in eine temporäre VARIANT kopiert, wobei dieselben Regeln wie bei normalen COM-Methodenaufrufen gelten. Wenn der Quellvariantentyp ungleich VarTyp ist, wird die Umwandlung durch Aufruf von VariantChangeType mit einem wFlags-Wert von 0 versucht. Es wird eine Ausnahme ausgelöst, wenn die Umwandlung scheitert.
Typ: Integer
-Flags haben Einfluss auf das Verhalten des Wrapper-Objekts; siehe ComObjFlags, um mehr darüber zu erfahren.
+Flags haben Einfluss auf das Verhalten des Wrapper-Objekts; siehe ComObjFlags für weitere Informationen.
Typ: ComValue, ComValueRef, ComObjArray oder ComObject
-Gibt ein Wrapper-Objekt zurück, das einen Variantentyp und Wert, oder einen Pointer enthält.
-Dieses Objekt ist vielseitig einsetzbar:
+Gibt ein Wrapper-Objekt zurück, das einen Variantentyp und einen Wert oder Pointer enthält.
+Dieses Objekt kann vielseitig verwendet werden:
ComValue(0xB, true)
ein Objekt, das den booleschen COM-Wert True repräsentiert.ComValue(0xB, true)
ein Objekt, das den booleschen COM-Wert True repräsentiert.Wenn der VarTyp eines Wrapper-Objekts VT_UNKNOWN (13) ist oder den VT_BYREF- (0x4000) oder VT_ARRAY-Flag (0x2000) enthält, kann die Ptr
-Eigenschaft verwendet werden, um die Adresse des Objekts, der typisierten Variable oder des SafeArrays abzurufen. Dadurch kann das ComObject selbst an jeden DllCall- oder ComCall-Parameter übergeben werden, der vom Typ "Ptr"
ist, oder explizit verwendet werden. Zum Beispiel ist ComObj.Ptr
in solchen Fällen äquivalent zu ComObjValue(ComObj)
.
Wenn der VarTyp eines Wrapper-Objekts VT_UNKNOWN (13) oder VT_DISPATCH (9) ist und der gewrappte Pointer Null (0) ist, kann die Ptr
-Eigenschaft verwendet werden, um den aktuellen Null-Wert abzurufen oder um dem Wrapper-Objekt einen Pointer zuzuweisen. Nach der Zuweisung (falls ungleich Null) wird der Pointer automatisch freigegeben, wenn das Wrapper-Objekt freigegeben wird. Dies kann zusammen mit DllCall- oder ComCall-Ausgabeparametern vom Typ "Ptr*"
oder "PtrP"
verwendet werden, um sicherzustellen, dass der Pointer automatisch freigegeben wird, z.B. wenn ein Fehler auftritt. Ein Beispiel dazu finden Sie unter ComObjQuery.
Wenn einem Wrapper-Objekt mit VarTyp VT_DISPATCH (9) und einem Null-Pointer (0) ein Pointer-Wert ungleich Null zugewiesen wird, ändert sich dessen Typ von ComValue
zu ComObject
. Die Eigenschaften und Methoden des gewrappten Objekts werden verfügbar gemacht, während die Ptr
-Eigenschaft nicht mehr zur Verfügung steht.
Wenn der VarTyp eines Wrapper-Objekts VT_UNKNOWN (13) ist oder den VT_BYREF- (0x4000) oder VT_ARRAY-Flag (0x2000) enthält, kann mit der Ptr
-Eigenschaft die Adresse des Objekts, die typisierte Variable oder das SafeArray abgerufen werden. Auf diese Weise kann das ComObject selbst an einen DllCall- oder ComCall-Parameter vom Typ "Ptr"
übergeben oder explizit verwendet werden. Zum Beispiel ist ComObj.Ptr
in solchen Fällen äquivalent zu ComObjValue(ComObj)
.
Wenn der VarTyp eines Wrapper-Objekts VT_UNKNOWN (13) oder VT_DISPATCH (9) ist und der gewrappte Pointer Null (0) ist, kann mit der Ptr
-Eigenschaft der aktuelle Null-Wert abgerufen oder dem Wrapper-Objekt ein Pointer zugewiesen werden. Wenn der Pointer einmal zugewiesen wurde (falls ungleich Null), wird er beim Freigeben des Wrapper-Objekts automatisch freigegeben. Dies kann zusammen mit DllCall- oder ComCall-Ausgabeparametern vom Typ "Ptr*"
oder "PtrP"
verwendet werden, um sicherzustellen, dass der Pointer automatisch freigegeben wird, z.B. wenn ein Fehler auftritt. Ein Beispiel dazu finden Sie unter ComObjQuery.
Wenn einem Wrapper-Objekt mit VarTyp VT_DISPATCH (9) und einem Null-Pointer (0) ein Pointer-Wert ungleich Null zugewiesen wird, ändert sich dessen Typ von ComValue
zu ComObject
. Die Eigenschaften und Methoden des gewrappten Objekts werden verfügbar, während die Ptr
-Eigenschaft nicht mehr verfügbar ist.
Wenn der VarTyp eines Wrapper-Objekts das VT_BYREF-Flag (0x4000) enthält, können leere eckige Klammern []
zum Lesen oder Schreiben des referenzierten Wertes verwendet werden.
Beim Erstellen einer Referenz muss Wert die Speicheradresse einer Variable oder eines Pufferspeichers mit ausreichender Kapazität zur Aufbewahrung eines Wertes bestimmten Typs sein. Das folgende Beispiel erstellt eine Variable, die von einer VBScript-Funktion beschrieben werden kann:
vbuf := Buffer(24, 0) -vref := ComValue(0x400C, vbuf.ptr) ; 0x400C ist eine Kombination aus VT_BYREF und VT_VARIANT. +vref := ComValue(0x400C, vbuf.ptr) ; 0x400C ist eine Kombination von VT_BYREF und VT_VARIANT. vref[] := "Eingabewert" sc.Run("Beispiel", vref) ; sc sollte wie im Beispiel unten initialisiert werden. MsgBox vref[]
Beachten Sie, dass, obwohl alle vorherigen Werte freigegeben werden, wenn ein neuer Wert mittels vref[]
oder der COM-Methode zugewiesen wird, der finale Wert nicht automatisch freigegeben wird. Um den Wert freizugeben, muss man wissen, um welchen Typ es sich handelt. Da es sich in diesem Fall um VT_VARIANT handelt, kann der Wert durch Aufruf von VariantClear mit DllCall oder durch Nutzung einer einfacheren Methode freigegeben werden: weisen Sie einen Integer zu, z.B. vref[] := 0
.
Wenn die Methode wie oben gezeigt eine Kombination aus VT_BYREF und VT_VARIANT akzeptiert, kann stattdessen eine VarRef verwendet werden. Zum Beispiel:
+Wenn die Methode eine Kombination von VT_BYREF und VT_VARIANT akzeptiert, wie oben gezeigt, kann stattdessen eine VarRef verwendet werden. Zum Beispiel:
eine_var := "Eingabewert" sc.Run("Beispiel", &eine_var) MsgBox eine_var-
Einige Methoden erfordern jedoch einen spezifischeren Variantentyp, wie z.B. VT_BYREF | VT_I4
. In solchen Fällen muss die erste oben gezeigte Vorgehensweise verwendet werden, wobei 0x400C mit dem entsprechenden Variantentyp ersetzt wird.
Einige Methoden erfordern jedoch einen spezifischeren Variantentyp, wie z.B. VT_BYREF | VT_I4
. In solchen Fällen muss die erste oben gezeigte Vorgehensweise verwendet und 0x400C mit dem entsprechenden Variantentyp ersetzt werden.
Wenn diese Funktion zum Wrappen eines IDispatch- oder IUnknown-Interface-Pointers (wenn als Integer übergeben) verwendet wird, ist das Wrapper-Objekt zum Freigeben des Pointers verantwortlich, falls erforderlich. Wenn das Skript also beabsichtigt, den Pointer nach dem Aufruf dieser Funktion weiter zu verwenden, muss es zuerst ObjAddRef(DispPtr)
aufrufen. Das ist nicht notwendig, wenn Wert selbst ein ComValue oder ComObject ist.
Eine Konvertierung von VT_UNKNOWN nach VT_DISPATCH führt dazu, dass IUnknown::QueryInterface aufgerufen wird und dadurch möglicherweise ein Interface-Pointer erzeugt wird, der vom Original abweicht. Diese Konvertierung löst außerdem eine Ausnahme aus, wenn das Objekt keinen IDispatch implementiert. Handelt es sich bei Wert hingegen um einen Integer und bei VarTyp um VT_DISPATCH, wird der Wert direkt verwendet; in diesem Fall muss der Wert ein IDispatch-kompatibler Interface-Pointer sein.
-Der VarTyp eines Wrapper-Objekts kann via ComObjType abgerufen werden.
-Der Wert eines Wrapper-Objekts kann via ComObjValue abgerufen werden.
-Bekannte Einschränkung: Jedes Mal, wenn ein COM-Objekt gewrappt wird, wird ein neues Wrapper-Objekt erstellt. Bei Vergleichen und Zuweisungen wie obj1 == obj2
und array[obj1] := Wert
werden beide Wrapper-Objekte nicht als identisch angesehen, sogar dann, wenn sie denselben Variantentyp und Wert enthalten.
Wenn diese Funktion zum Wrappen eines IDispatch- oder IUnknown-Interface-Pointers (wenn als Integer übergeben) verwendet wird, ist das Wrapper-Objekt für die Freigabe des Pointers verantwortlich, falls erforderlich. Wenn das Skript also den Pointer nach dem Aufruf dieser Funktion weiter verwenden will, muss es zuerst ObjAddRef(DispPtr)
aufrufen. Dies ist jedoch nicht notwendig, wenn Wert selbst ein ComValue oder ComObject ist.
Eine Umwandlung von VT_UNKNOWN nach VT_DISPATCH führt dazu, dass IUnknown::QueryInterface aufgerufen wird und dabei ein Interface-Pointer erzeugt werden kann, der vom Original abweicht, und dass eine Ausnahme ausgelöst wird, wenn das Objekt IDispatch nicht implementiert. Wenn dagegen Wert ein Integer und VarTyp VT_DISPATCH ist, wird der Wert direkt verwendet, d.h. der Wert muss ein IDispatch-kompatibler Interface-Pointer sein.
+Der VarTyp eines Wrapper-Objekts kann mit ComObjType abgerufen werden.
+Der Wert eines Wrapper-Objekts kann mit ComObjValue abgerufen werden.
+Bekannte Einschränkung: Jedes Mal, wenn ein COM-Objekt gewrappt wird, wird ein neues Wrapper-Objekt erstellt. Vergleiche und Zuweisungen wie obj1 == obj2
und arr[obj1] := Wert
behandeln die beiden Wrapper-Objekte als nicht identisch, auch wenn sie denselben Variantentyp und Wert enthalten.
ComObjFromPtr, ComObject, ComObjGet, ComObjConnect, ComObjFlags, ObjAddRef/ObjRelease, ComObjQuery, GetActiveObject (Microsoft Docs)
Übergibt VARIANT-ByRef an eine COM-Funktion.
+Übergibt eine VARIANT ByRef an eine COM-Funktion.
; Einleitung - ScriptControl benötigt eine 32-Bit-Version von AutoHotkey. code := " @@ -98,7 +98,7 @@Beispiele
sc := ComObject("ScriptControl"), sc.Language := "VBScript", sc.AddCode(code) -; Beispiel: VARIANT via Referenz an eine COM-Methode übergeben. +; Beispiel: Eine VARIANT ByRef an eine COM-Methode übergeben. var := ComVar() var[] := "Eingabewert" sc.Run("Beispiel", var.ref) @@ -120,7 +120,7 @@Beispiele
MsgBox var -; ComVar: Ein Objekt, mit dem ein Wert via Referenz übergeben werden kann. +; ComVar: Ein Objekt, mit dem ein Wert ByRef übergeben werden kann. ; this[] ruft den Wert ab. ; this[] := Val setzt den Wert. ; this.ref ruft ein ByRef-Objekt zur Übergabe an eine COM-Methode ab. @@ -129,7 +129,7 @@Beispiele
; Speicher für ein VARIANT reservieren, damit unser Wert hineinpasst. VARIANT wird auch dann ; verwendet, wenn vType != VT_VARIANT, damit VariantClear von __delete verwendet werden kann. this.var := Buffer(24, 0) - ; Ein Objekt erstellen, mit dem die Variable via ByRef übergeben werden kann. + ; Ein Objekt erstellen, mit dem die Variable ByRef übergeben werden kann. this.ref := ComValue(0x4000|vType, this.var.ptr + (vType=0xC ? 0 : 8)) ; Variantentyp für VariantClear speichern (wenn nicht VT_VARIANT). if Type != 0xC diff --git a/target/docs/lib/Control.htm b/target/docs/lib/Control.htm index 60af4d91..016c61cd 100644 --- a/target/docs/lib/Control.htm +++ b/target/docs/lib/Control.htm @@ -2,7 +2,7 @@Liste mit Control-Funktionen | AutoHotkey v2 - + @@ -13,7 +13,7 @@Control-Funktionen
-Funktionen zum Abrufen von Informationen über ein Steuerelement, oder zum Modifizieren eines Steuerelements. Klicken Sie auf einen Funktionsnamen, um mehr zu erfahren.
+Funktionen zum Abrufen von Informationen über ein Steuerelement oder zum Modifizieren eines Steuerelements. Klicken Sie auf einen Funktionsnamen, um mehr zu erfahren.
Funktion @@ -21,7 +21,7 @@Control-Funktionen
ControlAddItem -Fügt eine bestimmte Zeichenkette als neuen Listeneintrag an das untere Ende einer ListBox oder ComboBox hinzu. +Fügt einen neuen Listeneintrag zu einer ListBox oder ComboBox hinzu. ControlChooseIndex @@ -41,7 +41,7 @@Control-Funktionen
ControlFindItem -Gibt die Positionsnummer eines ListBox- oder ComboBox-Listeneintrags zurück, der exakt mit einer bestimmten Zeichenkette übereinstimmt. +Gibt die Nummer des ListBox- oder ComboBox-Eintrags zurück, der exakt mit einer Zeichenkette übereinstimmt. ControlFocus @@ -49,11 +49,11 @@Control-Funktionen
ControlGetChecked -Gibt einen Wert ungleich 0 zurück, wenn die CheckBox abgehakt oder der Radio-Button eingeschaltet ist. +Gibt einen Wert ungleich 0 zurück, wenn das CheckBox- oder Radio-Steuerelement eingeschaltet ist. ControlGetChoice -Gibt den Namen des aktuell ausgewählten ListBox- oder ComboBox-Listeneintrags zurück. +Gibt den Namen des aktuell ausgewählten ListBox- oder ComboBox-Eintrags zurück. ControlGetClassNN @@ -65,7 +65,7 @@Control-Funktionen
ControlGetFocus -Ermittelt, welches Steuerelement des Zielfensters den Tastaturfokus hat, falls vorhanden. +Ermittelt, welches Steuerelement im Zielfenster den Tastaturfokus hat, falls vorhanden. ControlGetHwnd @@ -73,11 +73,11 @@Control-Funktionen
ControlGetIndex -Gibt die Indexnummer des aktuell ausgewählten Listeneintrags oder Tabs im ListBox-, ComboBox- oder Tab-Steuerelement zurück. +Gibt die Indexnummer des aktuell ausgewählten Listeneintrags/Tabs im ListBox-, ComboBox- oder Tab-Steuerelement zurück. ControlGetItems -Gibt ein Array mit Einträgen/Zeilen aus einer ListBox, ComboBox oder DropDownList zurück. +Gibt ein Array aller Einträge/Zeilen in einer ListBox, ComboBox oder DropDownList zurück. ControlGetPos @@ -113,7 +113,7 @@Control-Funktionen
ControlSetChecked -Versetzt eine CheckBox oder einen Radio-Button in den abgehakten oder nicht-abgehakten bzw. ein- oder ausgeschalteten Zustand. +Schaltet ein CheckBox- oder Radio-Steuerelement ein oder aus. ControlSetEnabled @@ -121,7 +121,7 @@Control-Funktionen
ControlSetStyle -
ControlSetExStyleÄndert den Style bzw. erweiterten Style eines bestimmten Steuerelements. +Ändert den Style oder erweiterten Style eines bestimmten Steuerelements. ControlSetText @@ -129,7 +129,7 @@Control-Funktionen
ControlShow -Macht ein bestimmtes Steuerelement, das zuvor versteckt wurde, wieder sichtbar. +Macht ein zuvor verstecktes Steuerelement wieder sichtbar. ControlShowDropDown @@ -137,15 +137,15 @@Control-Funktionen
EditGetCurrentCol -Gibt die Spaltennummer in einem Edit-Steuerelement zurück, auf der sich aktuell der Textcursor (Texteinfügemarke) befindet. +Gibt die Nummer der Spalte in einem Edit-Steuerelement zurück, auf der sich der Textcursor (Einfügemarke) aktuell befindet. EditGetCurrentLine -Gibt die Zeilennummer in einem Edit-Steuerelement zurück, auf der sich aktuell der Cursor (Einfügemarke) befindet. +Gibt die Nummer der Zeile in einem Edit-Steuerelement zurück, auf der sich der Textcursor (Einfügemarke) aktuell befindet. EditGetLine -Gibt den Text einer bestimmten Zeile in einem Edit-Steuerelement zurück. +Gibt den Text auf einer bestimmten Zeile in einem Edit-Steuerelement zurück. EditGetLineCount @@ -157,32 +157,32 @@Control-Funktionen
EditPaste -Fügt eine bestimmte Zeichenkette an den Textcursor (Texteinfügemarke) eines Edit-Steuerelements ein. +Fügt eine bestimmte Zeichenkette am Textcursor (Einfügemarke) eines Edit-Steuerelements ein. ListViewGetContent -Gibt eine Liste von Einträgen/Zeilen aus einer ListView zurück. +Gibt eine Liste von Einträgen/Zeilen in einer ListView zurück. Der Steuerelement-Parameter
-Funktionen, die mit einzelnen Steuerelementen agieren, haben einen Parameter namens Steuerelement, der einige verschiedene Möglichkeiten unterstützt, um das Steuerelement zu identifizieren. Der Steuerelement-Parameter kann eines der folgenden Dinge sein:
-ClassNN (Zeichenkette): Die ClassNN-Bezeichnung (Klassenname und Instanznummer) des Steuerelements, die mit dem internen Tool Window Spy ermittelt werden kann. Zum Beispiel ist "Edit1" das erste Steuerelement mit dem Klassennamen "Edit".
+Funktionen, die mit einzelnen Steuerelementen arbeiten, haben einen Parameter namens Steuerelement, der einige verschiedene Möglichkeiten zur Identifizierung des Steuerelements unterstützt. Für den Steuerelement-Parameter kann Folgendes angegeben werden:
+ClassNN (Zeichenkette): Die ClassNN-Bezeichnung (Klassenname und Instanznummer) des Steuerelements, die mit dem internen Tool "Window Spy" ermittelt werden kann. Zum Beispiel ist "Edit1" das erste Steuerelement mit dem Klassennamen "Edit".
Text (Zeichenkette): Der Text des Steuerelements. Das Übereinstimmungsverhalten ist abhängig von SetTitleMatchMode.
HWND (Integer): Die HWND-Nummer (eindeutige ID) des Steuerelements, die üblicherweise via ControlGetHwnd, MouseGetPos oder DllCall abgerufen werden kann. Dies funktioniert auch mit versteckten Steuerelementen, selbst wenn DetectHiddenWindows ausgeschaltet ist. Alle nachfolgenden Fensterparameter werden ignoriert.
-Objekt: Ein Objekt beliebigen Typs, das eine
-Hwnd
-Eigenschaft besitzt, wie z.B. GuiControl. Es wird ein PropertyError ausgelöst, wenn das Objekt keineHwnd
-Eigenschaft hat, oder TypeError, wenn es keinen reinen Integer zurückgibt. Alle nachfolgenden Fensterparameter werden ignoriert.Weggelassen: Einige Funktionen können entweder mit einem Steuerelement oder Top-Level-Fenster arbeiten. Wenn der Steuerelement-Parameter weggelassen wird, verwendet die Funktion das Zielfenster (angegeben via FensterTitel), anstatt eines seiner Steuerelemente. Zum Beispiel kann ControlSend Tastendrücke direkt an das Fenster senden.
+Objekt: Ein beliebiges Objekt mit einer
+Hwnd
-Eigenschaft, wie z.B. ein GuiControl. Es wird ein PropertyError ausgelöst, wenn das Objekt keineHwnd
-Eigenschaft hat, oder ein TypeError, wenn es keinen reinen Integer zurückgibt. Alle nachfolgenden Fensterparameter werden ignoriert.Weggelassen: Einige Funktionen können entweder mit einem Steuerelement oder einem Top-Level-Fenster arbeiten. Wenn der Steuerelement-Parameter weggelassen wird, verwendet die Funktion das Zielfenster (angegeben via FensterTitel), anstatt eines seiner Steuerelemente. Zum Beispiel kann ControlSend Tastendrücke direkt an das Fenster senden.
Fehlerbehandlung
-Bei Misserfolg kann typischerweise einer der folgenden Fehler ausgelöst werden:
+Bei Misserfolg wird typischerweise einer der folgenden Fehler ausgelöst:
-
- TargetError: Das angegebene Fenster oder Steuerelement konnte nicht gefunden werden.
-- Error oder OSError: Es gab ein Problem bei der Umsetzung des Zwecks der Funktion, wie das Abrufen einer Einstellung oder das Anwenden einer Änderung.
+- TargetError: Das Zielfenster oder -steuerelement konnte nicht gefunden werden.
+- Error oder OSError: Es gab ein Problem, den Zweck der Funktion zu erfüllen, z.B. eine Einstellung abrufen oder eine Änderung vornehmen.
- ValueError oder TypeError: Es wurden ungültige Parameter erkannt.
Bemerkungen
-Um die Zuverlässigkeit zu verbessern, erfolgt nach jeder Verwendung einer steuerelementmodifizierenden Funktion automatisch eine Verzögerung (außer bei ControlSetStyle und ControlSetExStyle). Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem eine steuerelementmodifizierende Funktion verwendet wurde, automatisch eine Verzögerung (außer bei ControlSetStyle und ControlSetExStyle). Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Mit MouseGetPos kann die ClassNN-Bezeichnung oder HWND-Nummer (eindeutige ID) des Steuerelements unter dem Mauszeiger abgerufen werden.
Mit WinGetControls oder WinGetControlsHwnd kann eine Liste von Steuerelementen abgerufen werden, die in einem Fenster enthalten sind.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
diff --git a/target/docs/lib/ControlAddItem.htm b/target/docs/lib/ControlAddItem.htm index e2db6699..caf68a9e 100644 --- a/target/docs/lib/ControlAddItem.htm +++ b/target/docs/lib/ControlAddItem.htm @@ -2,7 +2,7 @@ControlAddItem - Syntax & Verwendung | AutoHotkey v2 - + @@ -14,7 +14,7 @@ControlAddItem
-Fügt eine bestimmte Zeichenkette als neuen Listeneintrag an das untere Ende einer ListBox oder ComboBox hinzu.
+Fügt einen neuen Listeneintrag zu einer ListBox oder ComboBox hinzu.
ControlAddItem Zkette, Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText@@ -39,14 +39,14 @@Parameter
Rückgabewert
Typ: Integer
-Diese Funktion gibt die Indexnummer des neuen Listeneintrags zurück, also 1 für den ersten Listeneintrag, 2 für den Zweiten usw.
+Diese Funktion gibt die Indexnummer des neuen Listeneintrags zurück, wobei 1 der erste Listeneintrag, 2 der zweite usw. ist.
Fehlerbehandlung
-Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte, oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
+Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
Es wird ein Error oder OSError ausgelöst, wenn der Listeneintrag nicht hinzugefügt werden konnte.
Bemerkungen
-Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/ControlChooseIndex.htm b/target/docs/lib/ControlChooseIndex.htm index 775676d6..56d38f3c 100644 --- a/target/docs/lib/ControlChooseIndex.htm +++ b/target/docs/lib/ControlChooseIndex.htm @@ -23,7 +23,7 @@Parameter
- N
Typ: Integer
-Die Indexnummer des Listeneintrags/Tabs; also 1 für den ersten, 2 für den zweiten usw. Um alle Listeneinträge in einer ListBox oder ComboBox abzuwählen, geben Sie 0 an.
+Die Indexnummer des Listeneintrags/Tabs, wobei 1 der erste Listeneintrag/Tab, 2 der zweite usw. ist. Um alle Listeneinträge in einer ListBox oder ComboBox abzuwählen, geben Sie 0 an.
- Steuerelement
- @@ -38,13 +38,13 @@
Parameter
Fehlerbehandlung
-Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte, oder wenn der Klassenname des Steuerelements weder "Combo", "List" noch "Tab" enthält.
+Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte oder wenn der Klassenname des Steuerelements weder "Combo", "List" noch "Tab" enthält.
Es wird ein Error oder OSError ausgelöst, wenn die Änderung nicht angewendet werden konnte.
Bemerkungen
-Das folgende Beispiel zeigt, wie alle Elemente innerhalb einer Mehrfachauswahl-ListBox ausgewählt werden können:
+Um alle Listeneinträge in einer Mehrfachauswahl-ListBox auszuwählen, gehen Sie wie folgt vor:
PostMessage(0x0185, 1, -1, "ListBox1", FensterTitel) ; Wählt alle ListBox-Einträge aus. 0x0185 ist LB_SETSEL.-Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/ControlChooseString.htm b/target/docs/lib/ControlChooseString.htm index a087fe10..0c74b2e7 100644 --- a/target/docs/lib/ControlChooseString.htm +++ b/target/docs/lib/ControlChooseString.htm @@ -39,14 +39,14 @@Parameter
Rückgabewert
Typ: Integer
-Diese Funktion gibt die Indexnummer des ausgewählten Listeneintrags zurück, also 1 für den ersten Listeneintrag, 2 für den Zweiten usw.
+Diese Funktion gibt die Indexnummer des ausgewählten Listeneintrags zurück, wobei 1 der erste Listeneintrag, 2 der zweite usw. ist.
Fehlerbehandlung
-Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte, oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
+Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
Es wird ein Error oder OSError ausgelöst, wenn die Änderung nicht angewendet werden konnte.
Bemerkungen
-Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/ControlClick.htm b/target/docs/lib/ControlClick.htm index eca3d00b..c333d7b3 100644 --- a/target/docs/lib/ControlClick.htm +++ b/target/docs/lib/ControlClick.htm @@ -40,7 +40,7 @@Parameter
Typ: Zeichenkette
Wenn leer oder weggelassen, wird standardmäßig Left verwendet (die linke Maustaste). Andernfalls geben Sie die zu klickende Taste oder die Dreh-/Kipprichtung des Mausrads an.
Taste: Left, Right, Middle (oder jeweils nur der erste Buchstabe) oder X1 (vierte Maustaste) oder X2 (fünfte Maustaste).
-Mausrad: Geben Sie WheelUp oder WU an, um das Mausrad nach oben zu drehen (von Ihnen weg); geben Sie WheelDown oder WD an, um es nach unten zu drehen (zu Ihnen hin). Geben Sie WheelLeft (WL) oder WheelRight (WR) an, um das Mausrad nach links bzw. rechts zu drücken. KlicksAnzahl ist die Anzahl der Schritte, um die das Mausrad gedreht werden soll.
+Mausrad: Geben Sie WheelUp oder WU an, um das Mausrad nach oben zu drehen (von Ihnen weg); geben Sie WheelDown oder WD an, um es nach unten zu drehen (zu Ihnen hin). Geben Sie WheelLeft (oder WL) oder WheelRight (oder WR) an, um das Mausrad nach links bzw. rechts zu kippen. KlicksAnzahl ist die Anzahl der Schritte, um die das Mausrad gedreht werden soll.
- KlicksAnzahl
@@ -53,7 +53,7 @@Parameter
Typ: Zeichenkette
Wenn leer oder weggelassen, besteht jeder Klick aus einem Down- und Up-Ereignis, das in der Mitte des Steuerelements erfolgt (sofern Modus 2 verwendet wird). Andernfalls geben Sie eine Zeichenkette an, die aus einer oder mehreren der folgenden Optionen besteht: Zum Beispiel:
-"d x50 y25"
.NA: Kann die Zuverlässigkeit verbessern. Siehe Zuverlässigkeit weiter unten.
+NA: Kann die Zuverlässigkeit erhöhen. Siehe Zuverlässigkeit weiter unten.
D: Drückt die Maustaste nach unten, ohne sie wieder loszulassen (also ein Down-Ereignis). Fehlt sowohl die D- als auch U-Option, wird ein vollständiger Mausklick gesendet (also ein Down- und Up-Ereignis).
U: Lässt die Maustaste los (also ein Up-Ereignis). Diese Option sollte nicht verwendet werden, wenn die D-Option bereits vorhanden ist (und umgekehrt).
Pos: Geben Sie das Wort Pos in Optionen an, um den X/Y-Positioniermodus zu erzwingen, wie oben im Steuerelement-oder-Pos-Parameter beschrieben.
@@ -69,7 +69,7 @@Fehlerbehandlung
@@ -101,7 +101,7 @@
- TargetError: Das Zielfenster konnte nicht gefunden werden.
- TargetError: Das Zielsteuerelement konnte nicht gefunden werden und Steuerelement-oder-Pos enthält keine gültige Position.
-- OSError (sehr selten): Die X- oder Y-Position wurde weggelassen und die Position des Steuerelements konnte nicht bestimmt werden.
+- OSError (sehr selten): Die X- oder Y-Position wurde weggelassen und die Position des Steuerelements konnte nicht ermittelt werden.
- ValueError oder TypeError: Es wurden ungültige Parameter erkannt.
Beispiele
diff --git a/target/docs/lib/ControlDeleteItem.htm b/target/docs/lib/ControlDeleteItem.htm index 2aba61f0..afd24963 100644 --- a/target/docs/lib/ControlDeleteItem.htm +++ b/target/docs/lib/ControlDeleteItem.htm @@ -23,7 +23,7 @@Klickt im NA-Modus auf Koordinaten relativ zum angegebenen Steuerelement.
-SetControlDelay -1 ; Kann die Zuverlässigkeit verbessern und Nebeneffekte reduzieren. +SetControlDelay -1 ; Kann Zuverlässigkeit erhöhen und Nebeneffekte reduzieren. ControlClick "Toolbar321", "Beliebiger Fenstertitel",,,, "NA x192 y10"Parameter
- N
Typ: Integer
-Die Indexnummer des Listeneintrags, also 1 für den ersten Listeneintrag, 2 für den Zweiten, und so weiter.
+Die Indexnummer des Listeneintrags, wobei 1 der erste Listeneintrag, 2 der zweite usw. ist.
- Steuerelement
- @@ -38,11 +38,11 @@
Parameter
Fehlerbehandlung
-Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte, oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
+Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
Es wird ein Error oder OSError ausgelöst, wenn der Listeneintrag nicht entfernt werden konnte.
Bemerkungen
-Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/ControlFindItem.htm b/target/docs/lib/ControlFindItem.htm index 36088ca4..006c8ae2 100644 --- a/target/docs/lib/ControlFindItem.htm +++ b/target/docs/lib/ControlFindItem.htm @@ -2,7 +2,7 @@ControlFindItem - Syntax & Verwendung | AutoHotkey v2 - + @@ -14,7 +14,7 @@ControlFindItem
-Gibt die Positionsnummer eines ListBox- oder ComboBox-Listeneintrags zurück, der exakt mit einer bestimmten Zeichenkette übereinstimmt.
+Gibt die Nummer des ListBox- oder ComboBox-Eintrags zurück, der exakt mit einer Zeichenkette übereinstimmt.
GefundenerEintrag := ControlFindItem(Zkette, Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)@@ -23,7 +23,7 @@Parameter
- Zkette
Typ: Zeichenkette
-Eine Zeichenkette, die gefunden werden soll. Die Suche ist nicht Groß-/Kleinschreibung-sensitiv. Im Gegensatz zu ControlChooseString muss der komplette Text des Eintrags übereinstimmen, nicht nur der beginnende Teil.
+Eine Zeichenkette, die gefunden werden soll. Die Suche ist nicht Groß-/Kleinschreibung-sensitiv. Im Gegensatz zu ControlChooseString muss der gesamte Text des Eintrags übereinstimmen, nicht nur der beginnende Teil.
- Steuerelement
- @@ -39,14 +39,14 @@
Parameter
Rückgabewert
Typ: Integer
-Diese Funktion gibt die Positionsnummer eines ListBox- oder ComboBox-Listeneintrags zurück, der exakt mit Zkette übereinstimmt. Der erste Listeneintrag im Steuerelement ist 1, der zweite 2 und so weiter. Wenn kein einziger Listeneintrag gefunden wurde, wird eine Ausnahme ausgelöst.
+Diese Funktion gibt die Nummer des ListBox- oder ComboBox-Eintrags zurück, der exakt mit Zkette übereinstimmt. Der erste Listeneintrag im Steuerelement ist 1, der zweite 2 und so weiter. Wenn nichts gefunden wurde, wird eine Ausnahme ausgelöst.
Fehlerbehandlung
-Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte, oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
+Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
Es wird ein Error ausgelöst, wenn der Listeneintrag nicht gefunden werden konnte.
Bemerkungen
-Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/ControlFocus.htm b/target/docs/lib/ControlFocus.htm index e82f059c..bbb3b35d 100644 --- a/target/docs/lib/ControlFocus.htm +++ b/target/docs/lib/ControlFocus.htm @@ -37,7 +37,7 @@Fehlerbehandlung
Bemerkungen
Um den gewünschten Effekt zu erzielen, darf das Fenster des Steuerelements weder minimiert noch versteckt sein.
-Um die Zuverlässigkeit der Funktion zu verbessern, erfolgt jedes Mal, wenn sie durchgeführt wurde, automatisch eine Verzögerung. Diese Verzögerung kann via SetControlDelay geändert werden.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Wenn ein Steuerelement durch eine Benutzereingabe fokussiert wird (z.B. durch Drücken der Tabulatortaste), werden zusätzliche Effekte unabhängig vom fokussierten Steuerelement angewendet. Diese Effekte werden nicht von ControlFocus angewendet, daher gelten die folgenden Einschränkungen:
@@ -47,15 +47,15 @@
Bemerkungen
Die WM_NEXTDLGCTL-Meldung kann verwendet werden, um das Steuerelement zu fokussieren und diese zusätzlichen Effekte anzuwenden. Zum Beispiel:
WinExist("A") ; Macht das aktive Fenster zum zuletzt gefundenen Fenster -ControlGet, StrlmntHwnd, Hwnd,, Button1 ; Holt HWND der ersten Schaltfläche -SendMessage, 0x0028, StrlmntHwnd, True ; 0x0028 ist WM_NEXTDLGCTL+StrlmntHwnd := ControlGetHwnd("Button1") ; Holt HWND der ersten Schaltfläche +SendMessage 0x0028, StrlmntHwnd, True ; 0x0028 ist WM_NEXTDLGCTL
SetControlDelay, ControlGetFocus, Control-Funktionen
Setzt den Eingabefokus auf die OK-Schaltfläche.
-ControlFocus "OK", "Beliebiger Fenstertitel" ; Setzt den Fokus auf die OK-Schaltfläche+
ControlFocus "OK", "Beliebiger Fenstertitel"
Gibt einen Wert ungleich 0 zurück, wenn die CheckBox abgehakt oder der Radio-Button eingeschaltet ist.
+Gibt einen Wert ungleich 0 zurück, wenn das CheckBox- oder Radio-Steuerelement eingeschaltet ist.
-IstGesetzt := ControlGetChecked(Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)+
IstEingeschaltet := ControlGetChecked(Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)
Typ: Integer (boolesch)
-Diese Funktion gibt 1 (true) zurück, wenn die CheckBox abgehakt oder der Radio-Button eingeschaltet ist, oder 0 (false), wenn nicht.
+Diese Funktion gibt 1 (true) zurück, wenn das CheckBox- oder Radio-Steuerelement eingeschaltet ist, andernfalls 0 (false).
Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte.
diff --git a/target/docs/lib/ControlGetChoice.htm b/target/docs/lib/ControlGetChoice.htm index f7b5e527..cc450fbb 100644 --- a/target/docs/lib/ControlGetChoice.htm +++ b/target/docs/lib/ControlGetChoice.htm @@ -2,7 +2,7 @@Gibt den Namen des aktuell ausgewählten ListBox- oder ComboBox-Listeneintrags zurück.
+Gibt den Namen des aktuell ausgewählten ListBox- oder ComboBox-Eintrags zurück.
Auswahl := ControlGetChoice(Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)@@ -34,10 +34,10 @@
Typ: Zeichenkette
-Diese Funktion gibt den Namen des aktuell ausgewählten ListBox- oder ComboBox-Listeneintrags zurück.
+Diese Funktion gibt den Namen des aktuell ausgewählten ListBox- oder ComboBox-Eintrags zurück.
Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte, oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
+Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
Bei Misserfolg wird ein Error ausgelöst.
Es wird ein Error oder OSError ausgelöst, wenn die ClassNN-Bezeichnung nicht ermittelt werden konnte.
Die ClassNN-Bezeichnung ist der Fensterklassenname eines Steuerelements, gefolgt von dessen Sequenznummer innerhalb des Top-Level-Fensters, das dieses Steuerelement enthält. Zum Beispiel ist "Edit1" das erste Edit-Steuerelement in einem Fenster und "Button12" die zwölfte Schaltfläche.
-Die ClassNN-Bezeichnung eines Steuerelements kann auch mit dem internen Tool Window Spy, MouseGetPos oder WinGetControls ermittelt werden.
-Einige Klassennamen enthalten Ziffern, die nicht zur Sequenznummer des Steuerelements gehören. Zum Beispiel ist "SysListView321" das erste ListView-Steuerelement in einem Fenster, nicht das dreihunderteinundzwanzigste. Um den Klassennamen ohne Sequenznummer zu ermitteln, übergeben Sie die HWND-Nummer des Steuerelements an WinGetClass.
+Die ClassNN-Bezeichnung eines Steuerelements besteht aus dem Namen seiner Fensterklasse gefolgt von seiner Sequenznummer innerhalb des Top-Level-Fensters, das dieses Steuerelement enthält. Zum Beispiel ist "Edit1" das erste Edit-Steuerelement in einem Fenster und "Button12" die zwölfte Schaltfläche.
+Die ClassNN-Bezeichnung eines Steuerelements kann auch mit Window Spy, MouseGetPos oder WinGetControls ermittelt werden.
+Einige Klassennamen enthalten Ziffern, die nicht zur Sequenznummer des Steuerelements gehören. Zum Beispiel ist "SysListView321" das erste ListView-Steuerelement in einem Fenster, nicht das dreihunderteinundzwanzigste. Um den Klassennamen ohne Sequenznummer abzurufen, übergeben Sie die HWND-Nummer des Steuerelements an WinGetClass.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Typ: Integer (boolesch)
-Diese Funktion gibt 1 (true) zurück, wenn die Interaktion mit dem angegebenen Steuerelement aktiviert ist, oder 0 (false), wenn nicht.
+Diese Funktion gibt 1 (true) zurück, wenn die Interaktion mit dem angegebenen Steuerelement aktiviert ist, andernfalls 0 (false).
Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte.
diff --git a/target/docs/lib/ControlGetFocus.htm b/target/docs/lib/ControlGetFocus.htm index 6a4d2e25..13bfc6cc 100644 --- a/target/docs/lib/ControlGetFocus.htm +++ b/target/docs/lib/ControlGetFocus.htm @@ -2,7 +2,7 @@Ermittelt, welches Steuerelement des Zielfensters den Tastaturfokus hat, falls vorhanden.
+Ermittelt, welches Steuerelement im Zielfenster den Tastaturfokus hat, falls vorhanden.
HWND := ControlGetFocus(FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)
Typ: Integer
Diese Funktion gibt die HWND-Nummer (eindeutige ID) des fokussierten Steuerelements zurück.
-Wenn keines der Steuerelemente im Zielfenster den Tastaturfokus hat, ist der Rückgabewert eine 0.
+Wenn keines der Steuerelemente im Zielfenster den Tastaturfokus hat, wird 0 zurückgegeben.
Es wird ein TargetError ausgelöst, wenn das Zielfenster oder Zielsteuerelement nicht ermittelt werden konnte.
Es wird ein OSError ausgelöst, wenn der Fokus nicht ermittelt werden konnte.
Das abgerufene Steuerelement ist auch das Steuerelement, das den Tastaturfokus hat; solche Steuerelemente sind die Anlaufstelle für jegliche Tastendrücke des Benutzers.
-Das Fenster muss aktiv sein, um ein fokussiertes Steuerelement (sofern vorhanden) abrufen zu können.
+Das mit dieser Funktion abgerufene Steuerelement hat den Tastaturfokus, d.h. das Steuerelement ist das Ziel aller Tastendrücke des Benutzers.
+Das Zielfenster muss aktiv sein, um ein fokussiertes Steuerelement zu haben, aber selbst dann ist nicht garantiert, dass es eines hat.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
ControlFocus, Control-Funktionen
diff --git a/target/docs/lib/ControlGetHwnd.htm b/target/docs/lib/ControlGetHwnd.htm index 1c331292..e9fb3ba0 100644 --- a/target/docs/lib/ControlGetHwnd.htm +++ b/target/docs/lib/ControlGetHwnd.htm @@ -40,7 +40,7 @@Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte.
Die HWND-Nummer (eindeutige ID) eines Steuerelements wird oft in Verbindung mit PostMessage, SendMessage und DllCall verwendet. Die HWND-Nummer eines Steuerelements kann auch via MouseGetPos abgerufen werden. So eine HWND-Nummer kann direkt in einem FensterTitel-Parameter verwendet werden. Dies funktioniert auch mit versteckten Steuerelementen, selbst wenn DetectHiddenWindows ausgeschaltet ist.
+Die HWND-Nummer (eindeutige ID) eines Steuerelements wird oft in Verbindung mit PostMessage, SendMessage und DllCall verwendet. Die HWND-Nummer eines Steuerelements kann auch mit MouseGetPos abgerufen werden. So eine HWND-Nummer kann direkt in einem FensterTitel-Parameter verwendet werden. Dies funktioniert auch mit versteckten Steuerelementen, selbst wenn DetectHiddenWindows ausgeschaltet ist.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Gibt die Indexnummer des aktuell ausgewählten Listeneintrags oder Tabs im ListBox-, ComboBox- oder Tab-Steuerelement zurück.
+Gibt die Indexnummer des aktuell ausgewählten Listeneintrags/Tabs im ListBox-, ComboBox- oder Tab-Steuerelement zurück.
Index := ControlGetIndex(Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)@@ -34,10 +34,10 @@
Typ: Integer
-Diese Funktion gibt die Indexnummer des aktuell ausgewählten Listeneintrags oder Tabs zurück. Der erste Listeneintrag oder Tab ist 1, der Zweite ist 2 und so weiter. Wenn kein Listeneintrag oder Tab ausgewählt wurde, ist der Rückgabewert 0.
+Diese Funktion gibt die Indexnummer des aktuell ausgewählten Listeneintrags/Tabs zurück. Der erste Listeneintrag/Tab ist 1, der zweite 2 und so weiter. Wenn kein Listeneintrag/Tab ausgewählt ist, wird 0 zurückgegeben.
Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte, oder wenn der Klassenname des Steuerelements weder "Combo", "List" noch "Tab" enthält.
+Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte oder wenn der Klassenname des Steuerelements weder "Combo", "List" noch "Tab" enthält.
Es wird ein OSError ausgelöst, wenn eine Meldung nicht an das Steuerelement gesendet werden konnte.
Ruft den aktiven Tab des ersten Tab-Steuerelements ab.
+Ruft die aktive Tabnummer des ersten Tab-Steuerelements ab.
WelcherTab := ControlGetIndex("SysTabControl321", "Beliebiger Fenstertitel") MsgBox "Tab #" WelcherTab " ist aktiv." diff --git a/target/docs/lib/ControlGetItems.htm b/target/docs/lib/ControlGetItems.htm index 15cf5d92..85cc164a 100644 --- a/target/docs/lib/ControlGetItems.htm +++ b/target/docs/lib/ControlGetItems.htm @@ -2,7 +2,7 @@ControlGetItems - Syntax & Verwendung | AutoHotkey v2 - + @@ -14,7 +14,7 @@ControlGetItems
-Gibt ein Array mit Einträgen/Zeilen aus einer ListBox, ComboBox oder DropDownList zurück.
+Gibt ein Array aller Einträge/Zeilen in einer ListBox, ComboBox oder DropDownList zurück.
Einträge := ControlGetItems(Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)@@ -33,15 +33,15 @@Parameter
Rückgabewert
-Typ: Array mit Zeichenketten
-Diese Funktion gibt ein Array zurück, das die Texte aller Listeneinträge/Zeilen enthält.
+Typ: Array von Zeichenketten
+Diese Funktion gibt ein Array zurück, das den Text jedes Listeneintrags bzw. jeder Zeile enthält.
Fehlerbehandlung
-Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte, oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
-Bei Misserfolg wird ein Error ausgelöst, z.B. wenn eine Meldung einen Fehlercode zurückgibt oder nicht gesendet werden konnte.
+Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte oder wenn der Klassenname des Steuerelements weder "Combo" noch "List" enthält.
+Es wird ein Error ausgelöst, wenn z.B. eine Meldung einen Fehlercode zurückgibt oder nicht gesendet werden konnte.
Bemerkungen
-Einige Anwendungen verhindern mit Absicht, dass ihre Listeneinträge nicht abgerufen werden kann. In solchen Fällen wird normalerweise keine Ausnahme ausgelöst, allerdings werden alle Felder abgerufen, als wären sie leer.
+Einige Anwendungen behandeln die Daten ihrer Listeneinträge vertraulich, so dass ihr Text nicht abgerufen werden kann. In solchen Fällen wird normalerweise keine Ausnahme ausgelöst, aber alle abgerufenen Felder sind leer.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/ControlGetStyle.htm b/target/docs/lib/ControlGetStyle.htm index c3036cb3..96fefc3c 100644 --- a/target/docs/lib/ControlGetStyle.htm +++ b/target/docs/lib/ControlGetStyle.htm @@ -2,7 +2,7 @@ControlGetStyle / ControlGetExStyle - Syntax & Verwendung | AutoHotkey v2 - + diff --git a/target/docs/lib/ControlGetText.htm b/target/docs/lib/ControlGetText.htm index 2272f859..7bef8b27 100644 --- a/target/docs/lib/ControlGetText.htm +++ b/target/docs/lib/ControlGetText.htm @@ -42,10 +42,10 @@Fehlerbehandlung
Bemerkungen
Hinweis: Mit ListViewGetContent oder ControlGetItems können stattdessen Texte aus einer ListView, ListBox oder ComboBox abgerufen werden.
-Wenn der abgerufene Text abgeschnitten (unvollständig) zu sein scheint, kann der Text stattdessen durch Senden der WM_GETTEXT-Meldung via SendMessage abgerufen werden. AutoHotkey macht den Rückgabewert für den Text zu klein, weil die Anwendung, deren Text abgerufen werden soll, nur sporadisch oder gar nicht auf die WM_GETTEXTLENGTH-Meldung reagiert.
-Diese Funktion kann sehr viel Arbeitsspeicher beanspruchen, wenn das Zielsteuerelement eine große Menge an Text beinhaltet (z.B. wenn ein großes Dokument im Texteditor geöffnet wurde). Der Speicher einer Variable kann aber, nachdem sie verwendet wurde, wieder freigegeben werden, indem man ihr einen leeren Wert zuweist, z.B.
+Text := ""
.Wenn der abgerufene Text gekürzt (unvollständig) ist, kann es erforderlich sein, den Text stattdessen durch Senden der WM_GETTEXT-Meldung via SendMessage abzurufen. Der Grund dafür ist, dass einige Anwendungen nicht richtig auf die WM_GETTEXTLENGTH-Meldung reagieren, wodurch AutoHotkey den Rückgabewert zu klein für den gesamten Text macht.
+Diese Funktion kann sehr viel Arbeitsspeicher beanspruchen, wenn das Zielsteuerelement eine große Menge an Text enthält (z.B. wenn ein großes Dokument in einem Texteditor geöffnet wurde). Allerdings kann der Speicher einer Variable nach ihrer Verwendung wieder freigegeben werden, indem ihr ein leerer Wert zugewiesen wird, d.h.
Text := ""
.Die meisten Steuerelemente markieren das Ende einer Zeile mit einem CR-LF-Paar (`r`n) anstelle eines einzelnen LF-Zeichens (`n).
-+
SetTitleMatchMode "Slow"
muss nicht gesetzt werden, weil ControlGetText den Text immer mithilfe der langsamen Methode abruft (mit dieser Methode können deutlich mehr Steuerelemente angesteuert werden).
SetTitleMatchMode "Slow"
muss nicht verwendet werden, da ControlGetText den Text immer im langsamen Modus abruft (dieser Modus funktioniert mit viel mehr Steuerelementen).Mit WinGetControls oder WinGetControlsHwnd kann eine Liste von Steuerelementen abgerufen werden, die in einem Fenster enthalten sind.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/ControlHide.htm b/target/docs/lib/ControlHide.htm index 9096338c..dcffc3f3 100644 --- a/target/docs/lib/ControlHide.htm +++ b/target/docs/lib/ControlHide.htm @@ -37,7 +37,7 @@Fehlerbehandlung
Bemerkungen
Mit ControlSetEnabled kann zusätzlich der Tastaturkurzbefehl eines Steuerelements (unterstrichene Buchstabe) deaktiviert werden.
-Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/ControlHideDropDown.htm b/target/docs/lib/ControlHideDropDown.htm index 0752b114..c71c4773 100644 --- a/target/docs/lib/ControlHideDropDown.htm +++ b/target/docs/lib/ControlHideDropDown.htm @@ -40,7 +40,7 @@Siehe auch
ControlShowDropDown, Control-Funktionen
Bemerkungen
-Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Beispiele
diff --git a/target/docs/lib/ControlMove.htm b/target/docs/lib/ControlMove.htm index ea432baf..b339aa6f 100644 --- a/target/docs/lib/ControlMove.htm +++ b/target/docs/lib/ControlMove.htm @@ -50,7 +50,7 @@Fehlerbehandlung
Bemerkungen
-Um die Zuverlässigkeit der Funktion zu verbessern, erfolgt jedes Mal, wenn sie durchgeführt wurde, automatisch eine Verzögerung. Diese Verzögerung kann via SetControlDelay geändert werden.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/ControlSend.htm b/target/docs/lib/ControlSend.htm index a14bb74d..614f7503 100644 --- a/target/docs/lib/ControlSend.htm +++ b/target/docs/lib/ControlSend.htm @@ -23,7 +23,7 @@Parameter
Typ: Zeichenkette
-Eine Reihe von Tasten, die gesendet werden sollen (siehe Send-Funktion für mehr Details). Die Geschwindigkeit, mit welcher die Zeichen gesendet werden, wird durch SetKeyDelay beeinflusst.
+Eine Reihe von Tasten, die gesendet werden sollen (weitere Informationen finden Sie auf der Send-Seite). Die Geschwindigkeit, mit der die Zeichen gesendet werden, wird durch SetKeyDelay beeinflusst.
Im Gegensatz zur Send-Funktion kann ControlSend keine Mausklicks senden. Verwenden Sie stattdessen ControlClick.
Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte.
ControlSendText sendet die einzelnen Zeichen des Tasten-Parameters, ohne z.B. {Enter}
in Enter, ^c
in Strg+C usw. zu übersetzen. Weitere Informationen finden Sie unter Text-Modus. {Raw} oder {Text} kann auch bei ControlSend verwendet werden.
Wenn der Steuerelement-Parameter weggelassen wird, versucht diese Funktion, die Tastatureingaben an das oberste Steuerelement (welches oft das Richtige ist) oder, falls keine Steuerelemente vorhanden sind, an das Fenster selbst zu senden. Das ist nützlich, wenn das Fenster keine Steuerelemente zu haben scheint, oder wenn es egal ist, an welches Steuerelement die Tastendrücke gesendet werden.
-Standardmäßig werden Modifikatortastendrücke (Strg, Alt, Umschalt und Win) so gesendet, wie man es von der Send-Funktion gewohnt ist. Dadurch können Konsolenfenster wie die Windows-Eingabeaufforderung Großbuchstaben, Steuerzeichen usw. korrekt erkennen. Dies könnte auch die Zuverlässigkeit in anderen Bereichen verbessern.
+ControlSendText sendet die einzelnen Zeichen des Tasten-Parameters ohne Übersetzung von z.B. {Enter}
in Enter, ^c
in Strg+C und so weiter. Weitere Informationen finden Sie unter Text-Modus. {Raw} oder {Text} kann auch bei ControlSend verwendet werden.
Wenn der Steuerelement-Parameter weggelassen wird, versucht diese Funktion, die Tastendrücke entweder an das oberste Steuerelement zu senden (welches oft das richtige ist) oder, wenn keine Steuerelemente vorhanden sind, an das Fenster selbst. Das ist nützlich, wenn das Fenster keine Steuerelemente zu haben scheint, oder wenn es egal ist, an welches Steuerelement die Tastendrücke gesendet werden.
+Standardmäßig werden Modifikatoren (Strg, Alt, Umschalt und Win) so gesendet, wie sie normalerweise mit der Send-Funktion gesendet werden würden. Dadurch können Konsolenfenster wie die Windows-Eingabeaufforderung Großbuchstaben, Steuerzeichen usw. korrekt erkennen. Dies könnte auch die Zuverlässigkeit in anderen Bereichen verbessern.
In einigen Fällen können diese Modifikatorereignisse jedoch das aktive Fenster stören, insbesondere dann, wenn der Benutzer während eines ControlSends aktiv schreibt oder wenn Alt gesendet wird (da Alt die Menüleiste des aktiven Fensters aktiviert). Dies lässt sich vermeiden, indem man explizit Up- und Down-Ereignisse des Modifikators sendet. Zum Beispiel:
ControlSend "{Alt down}f{Alt up}", "Edit1", "Unbenannt - Editor"
Die obige Methode erlaubt auch das Senden von Modifikatoren (Strg, Alt, Umschalt und Win), während der PC gesperrt ist (durch die Anmeldeaufforderung geschützt ist).
@@ -57,9 +57,9 @@Wenn es sich bei dem Zielsteuerelement um ein Edit-Steuerelement (oder ähnliches) handelt, sind die folgenden Aktionen in der Regel zuverlässiger und schneller als ControlSend:
-EditPaste("Dieser Text wird an der Position des Textcursors eingefügt.", Steuerelementname, FensterTitel)-
ControlSetText("Dieser Text ersetzt vollständig den aktuell vorhandenen Text.", Steuerelementname, FensterTitel)-
ControlSend ist normalerweise nicht in der Lage, die Menüleiste eines Fensters zu manipulieren. Um das zu umgehen, können Sie MenuSelect verwenden. Sollte dies aufgrund der Art der Menüleiste nicht funktionieren, können Sie stattdessen versuchen, die Meldung des gewünschten Menüpunkts mithilfe des SendMessage-Tutorials herauszufinden.
+EditPaste("Dieser Text wird an der Position des Textcursors eingefügt.", SteuerelementName, FensterTitel)+
ControlSetText("Dieser Text wird den bisherigen Text vollständig ersetzen.", SteuerelementName, FensterTitel)+
ControlSend ist normalerweise nicht in der Lage, die Menüleiste eines Fensters zu manipulieren. Um das zu umgehen, verwenden Sie MenuSelect. Sollte dies aufgrund der Art der Menüleiste nicht funktionieren, können Sie stattdessen versuchen, die Meldung des gewünschten Menüpunkts mithilfe des SendMessage-Tutorials herauszufinden.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
SetKeyDelay, Escapesequenzen (z.B. `n) , Control-Funktionen, Send, Winamp automatisieren
@@ -71,9 +71,9 @@Versetzt eine CheckBox oder einen Radio-Button in den abgehakten oder nicht-abgehakten bzw. ein- oder ausgeschalteten Zustand.
+Schaltet ein CheckBox- oder Radio-Steuerelement ein oder aus.
ControlSetChecked NeueEinstellung, Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText@@ -24,7 +24,7 @@
Typ: Integer
-Geben Sie einen der folgenden Werte an:
+Einer der folgenden Werte:
1
oder True
schaltet die Einstellung ein0
oder False
schaltet die Einstellung ausEs wird ein OSError ausgelöst, wenn eine Meldung nicht an das Steuerelement gesendet werden konnte.
Um die korrekte Funktionalität zu gewährleisten, setzt diese Funktion zudem den Eingabefokus auf das Steuerelement.
-Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Damit diese Funktion korrekt funktioniert, wird das Steuerelement außerdem fokussiert.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Typ: Integer
-Geben Sie einen der folgenden Werte an:
+Einer der folgenden Werte:
1
oder True
schaltet die Einstellung ein0
oder False
schaltet die Einstellung ausEs wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte.
Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Ändert den Style bzw. erweiterten Style eines bestimmten Steuerelements.
+Ändert den Style oder erweiterten Style eines bestimmten Steuerelements.
ControlSetStyle Wert, Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText ControlSetExStyle Wert, Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText@@ -24,31 +24,31 @@
Typ: Integer oder Zeichenkette
-Verwenden Sie einen positiven Integer, um den Style des Fensters komplett zu überschreiben; also um den Style auf den angegebenen Wert zu setzen.
-Um Styles auf einfache Weise hinzuzufügen, zu entfernen oder umzuschalten, übergeben Sie eine numerische Zeichenkette, die entweder mit einem Pluszeichen (+), Minuszeichen (-) oder Zirkumflex (^) beginnt. Der neue Style-Wert wird wie folgt berechnet (AktuellerStyle kann mit ControlGetStyle/ControlGetExStyle oder WinGetStyle/WinGetExStyle abgerufen werden):
+Verwenden Sie einen positiven Integer, um den Style des Fensters vollständig zu überschreiben bzw. direkt auf Wert zu setzen.
+Um Styles hinzuzufügen, zu entfernen oder umzuschalten, übergeben Sie eine numerische Zeichenkette, die entweder mit einem Pluszeichen (+), Minuszeichen (-) oder Zirkumflex (^) beginnt. Der neue Style-Wert wird wie folgt berechnet (wobei AktuellerStyle mit ControlGetStyle, ControlGetExStyle, WinGetStyle oder WinGetExStyle abgerufen werden kann):
Operation | Präfix | -Beispiel-Zeichenkette | +Beispiel | Formel | |
---|---|---|---|---|---|
Add | +Hinzufügen | + | -+0x80 | +"+0x80" |
NeuerStyle := AktuellerStyle | Wert |
Remove | +Entfernen | - | --0x80 | +"-0x80" |
NeuerStyle := AktuellerStyle & ~Wert |
Umschalten | ^ | -^0x80 | +"^0x80" |
NeuerStyle := AktuellerStyle ^ Wert |
Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte.
-Es wird ein OSError ausgelöst, wenn der Style nicht geändert werden konnte. Nur zum Teil durchgeführte Änderungen werden als Erfolg gewertet.
+Es wird ein OSError ausgelöst, wenn der Style nicht geändert werden konnte. Eine Teiländerung wird als Erfolg gewertet.
Weitere Styles finden Sie unter Fenster- und Steuerelement-Styles.
-Die Änderungen einiger Styles werden erst wirksam, wenn das komplette Fenster via WinRedraw neu gezeichnet wurde.
+Bestimmte Style-Änderungen werden erst wirksam, wenn das gesamte Fenster via WinRedraw neu gezeichnet wird.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Die meisten Steuerelemente markieren das Ende einer Zeile mit einem CR-LF-Paar (`r`n) anstelle eines einzelnen LF-Zeichens (`n). Um die `n-Zeichen eines Textblocks mit `r`n zu ersetzen, gehen Sie wie folgt vor:
MeineVar := StrReplace(MeineVar, "`n", "`r`n")-
Um die Zuverlässigkeit der Funktion zu verbessern, erfolgt jedes Mal, wenn sie durchgeführt wurde, automatisch eine Verzögerung. Diese Verzögerung kann via SetControlDelay geändert werden.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Macht ein bestimmtes Steuerelement, das zuvor versteckt wurde, wieder sichtbar.
+Macht ein zuvor verstecktes Steuerelement wieder sichtbar.
ControlShow Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText@@ -36,7 +36,7 @@
Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte.
Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Es wird ein OSError ausgelöst, wenn eine Meldung nicht an das Steuerelement gesendet werden konnte.
Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Öffnet das Ausführen-Dialogfenster, zeigt dessen Auswahlliste für 2 Sekunden an und schließt das Dialogfenster wieder.
Send "#r" ; Ausführen-Dialogfenster öffnen. -WinWaitActive "ahk_class #32770" ; Wartet auf das Erscheinen des Dialogfensters. +WinWaitActive "ahk_class #32770" ; Auf Erscheinen des Dialogfensters warten. ControlShowDropDown "ComboBox1" ; Auswahlliste anzeigen. Der zweite Parameter wurde weggelassen, um das zuletzt gefundene Fenster zu verwenden. Sleep 2000 ControlHideDropDown "ComboBox1" ; Auswahlliste verstecken. diff --git a/target/docs/lib/CoordMode.htm b/target/docs/lib/CoordMode.htm index 674d8c21..075f2881 100644 --- a/target/docs/lib/CoordMode.htm +++ b/target/docs/lib/CoordMode.htm @@ -46,8 +46,8 @@Rückgabewert
Diese Funktion gibt die vorherige Einstellung zurück.
Bemerkungen
-Wenn diese Funktion nie verwendet wird, verwenden alle internen Funktionen standardmäßig Koordinaten, die relativ zum Clientbereich des aktiven Fensters sind (außer anderweitig dokumentierte interne Funktionen, wie z.B. WinMove und InputBox).
-Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet vorerst die Standardeinstellung der Funktion. Um diese zu ändern, nutzen Sie die Funktion während der Startphase des Skripts.
+Wenn diese Funktion nie verwendet wird, verwenden alle internen Funktionen standardmäßig Koordinaten, die relativ zum Clientbereich des aktiven Fensters sind (außer anderweitig dokumentierte interne Funktionen wie WinMove und InputBox).
+Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet zunächst die Standardeinstellung der Funktion. Diese Standardeinstellung kann geändert werden, indem die Funktion während der Startphase des Skripts verwendet wird.
Die internen A_CoordMode-Variablen enthalten die aktuellen Einstellungen.
Siehe auch
Click, MouseMove, MouseClick, MouseClickDrag, MouseGetPos, PixelGetColor, PixelSearch, ToolTip, Menu.Show
diff --git a/target/docs/lib/Critical.htm b/target/docs/lib/Critical.htm index a85ca960..f168cc55 100644 --- a/target/docs/lib/Critical.htm +++ b/target/docs/lib/Critical.htm @@ -39,16 +39,16 @@Verhalten von kritischen Threads
Ein kritischer Thread wird unterbrechbar, wenn ein Mitteilungsfenster oder ein anderes Dialogfenster angezeigt wird. Im Gegensatz zu Thread Interrupt wird der Thread jedoch wieder kritisch, wenn der Benutzer das Dialogfenster schließt.
Critical Off
-Während gepufferte Ereignisse darauf warten, neue Threads zu starten, ist es nicht möglich,
+Critical "Off"
zu nutzen, um eine sofortige Unterbrechung des aktuellen Threads zu bewirken. Stattdessen vergehen durchschnittlich 5 Millisekunden, bevor eine Unterbrechung erfolgt. Somit ist zu 99,999 % sichergestellt, dass mindestens eine Zeile nachCritical "Off"
ausgeführt wird, bevor es zu einer Unterbrechung kommt. Mit Mitteln wieSleep -1
oder WinWait in Verbindung mit einem noch nicht existierenden Fenster können sofortige Unterbrechungen erzwungen werden.Während gepufferte Ereignisse darauf warten, neue Threads zu starten, ist es nicht möglich, mit
Critical "Off"
eine sofortige Unterbrechung des aktuellen Threads zu bewirken. Stattdessen vergehen durchschnittlich 5 Millisekunden, bevor eine Unterbrechung erfolgt. Somit ist zu 99,999 % sichergestellt, dass mindestens eine Zeile nachCritical "Off"
ausgeführt wird, bevor es zu einer Unterbrechung kommt. Mit Mitteln wieSleep -1
oder WinWait in Verbindung mit einem noch nicht existierenden Fenster können sofortige Unterbrechungen erzwungen werden.
Critical "Off"
beendet die unterbrechungsfreie Phase des aktuellen Threads, auch wenn der Thread nicht kritisch war, so dass Ereignisse wie Size früher bzw. vorhersehbarer abgearbeitet werden können.Thread-Einstellungen
-Schauen Sie sich A_IsCritical an, wie die aktuelle Einstellung von Critical gespeichert und wiederhergestellt werden kann. Beachten Sie, dass Critical eine threadspezifische Einstellung ist, deshalb wird, wenn ein kritischer Thread endet, der darunter liegende/fortgesetzte Thread (sofern vorhanden) automatisch unkritisch sein. Somit ist es nicht notwendig,
-Critical "Off"
kurz vor dem Beenden eines Threads durchzuführen.Wenn Critical vom Auto-Execute-Thread nicht verwendet wird, sind alle Threads zunächst unkritisch (es sei denn, Thread Interrupt wurde verwendet). Wird Critical hingegen vom Auto-Execute-Thread eingeschaltet, aber nie ausgeschaltet, ist jeder neu gestartete Thread (z.B. Hotkey, benutzerdefinierter Menüpunkt oder zeitgesteuerte Subroutine) zunächst kritisch.
+Schauen Sie sich A_IsCritical an, wie die aktuelle Einstellung von Critical gespeichert und wiederhergestellt werden kann. Beachten Sie, dass Critical eine threadspezifische Einstellung ist, deshalb wird, wenn ein kritischer Thread endet, der darunter liegende/fortgesetzte Thread (sofern vorhanden) automatisch unkritisch sein. Somit ist es nicht notwendig,
+Critical "Off"
kurz vor dem Ende eines Threads auszuführen.Wenn Critical vom Auto-Execute-Thread nicht verwendet wird, sind alle Threads zunächst unkritisch (obwohl die Einstellungen von Thread Interrupt weiterhin gelten). Wenn hingegen der Auto-Execute-Thread Critical einschaltet, aber nie ausschaltet, ist jeder neu gestartete Thread (z.B. Hotkey, benutzerdefinierter Menüpunkt oder zeitgesteuerte Subroutine) zunächst kritisch.
Thread NoTimers ist quasi dasselbe wie Critical, verhindert aber nur, dass Timer den aktuellen Thread unterbrechen.
Meldungsüberprüfintervall
-Die Angabe einer positiven Zahl im ersten Parameter (z.B.
+Critical 30
) schaltet Critical ein und ändert die Mindestanzahl der zu wartenden Millisekunden zwischen den Überprüfungen der internen Meldungswarteschlange. Wenn keine Zahl angegeben ist, wird bei eingeschaltetem Critical standardmäßig 16 ms und bei ausgeschaltetem Critical standardmäßig 5 ms gewartet. Die Erhöhung des Intervalls verzögert das Eintreffen von Meldungen/Ereignissen, so dass der aktuelle Thread mehr Zeit für seine Beendigung hat. Dies verringert das Risiko, dass einzelne OnMessage-Rückrufe und GUI-Ereignisse aufgrund von "Thread wird bereits ausgeführt" verloren gehen. Wartende Funktionen wie Sleep und WinWait werden Meldungen unabhängig von dieser Einstellung überprüfen (um das umgehen, können Sie z.B.DllCall("Sleep", "UInt", 500)
nutzen).Die Angabe einer positiven Zahl im ersten Parameter (z.B.
Critical 30
) schaltet Critical ein und ändert die Anzahl der Millisekunden, die mindestens zwischen den Überprüfungen der internen Meldungswarteschlange gewartet werden muss. Wenn keine Zahl angegeben ist, wird bei eingeschaltetem Critical standardmäßig 16 ms und bei ausgeschaltetem Critical standardmäßig 5 ms gewartet. Die Erhöhung des Intervalls verzögert das Eintreffen von Meldungen/Ereignissen, so dass der aktuelle Thread mehr Zeit für seine Beendigung hat. Dies verringert das Risiko, dass einzelne OnMessage-Rückrufe und GUI-Ereignisse aufgrund von "Thread wird bereits ausgeführt" verloren gehen. Wartende Funktionen wie Sleep und WinWait werden Meldungen unabhängig von dieser Einstellung überprüfen (um das zu umgehen, können Sie z.B.DllCall("Sleep", "UInt", 500)
verwenden).Diese Einstellung hat Einfluss auf Folgendes:
#space:: ; Hotkey: WIN+LEERTASTE. { Critical - ToolTip "Neue Threads werden erst gestartet, wenn dieser Tooltip verschwindet." + ToolTip "Neue Threads werden erst gestartet, wenn dieser Tooltip verschwunden ist." Sleep 3000 ToolTip ; Tooltip ausschalten. return ; Die Rückkehr aus einer Hotkey-Funktion beendet den Thread. Jeder darunter liegende Thread, der fortgesetzt werden soll, ist per Definition unkritisch. diff --git a/target/docs/lib/DateAdd.htm b/target/docs/lib/DateAdd.htm index 7775ea49..58d2dee1 100644 --- a/target/docs/lib/DateAdd.htm +++ b/target/docs/lib/DateAdd.htm @@ -2,7 +2,7 @@DateAdd - Syntax & Verwendung | AutoHotkey v2 - + @@ -14,7 +14,7 @@DateAdd
-Addiert oder subtrahiert Zeit von einem Datum-Zeit-Wert.
+Erhöht oder verringert einen Datum-Zeit-Wert um eine bestimmte Zeitmenge.
Ergebnis := DateAdd(DatumZeit, Zeit, ZeitEinheit)
Parameter
@@ -29,23 +29,23 @@Parameter
Die Zeitmenge, die addiert werden soll (Integer oder Floating-Point-Zahlen). Mit einer negativen Zahl kann eine Subtraktion durchgeführt werden.
+Die zu addierende Zeitmenge, als Integer oder Floating-Point-Zahl. Mit einer negativen Zahl kann subtrahiert werden.
Typ: Zeichenkette
-Das Einheitszeichen des Zeit-Parameters. ZeitEinheit kann eine der folgenden Zeichenketten sein (oder jeweils nur erste Buchstabe davon): Seconds, Minutes, Hours oder Days.
Die Bedeutung des Zeit-Parameters. ZeitEinheit kann eine der folgenden Zeichenketten sein (oder jeweils nur der erste Buchstabe davon): Seconds, Minutes, Hours oder Days.
Typ: Zeichenkette
-Diese Funktion gibt eine Zeichenkette von Ziffern im YYYYMMDDHH24MISS-Format zurück. Diese Zeichenkette sollte nicht als Zahl behandelt werden (man sollte keine mathematischen Operationen an ihr durchführen oder sie numerisch vergleichen).
+Diese Funktion gibt eine Zeichenkette von Ziffern im YYYYMMDDHH24MISS-Format zurück. Diese Zeichenkette sollte nicht als Zahl behandelt werden, d.h. es sollten keine Berechnungen oder numerischen Vergleiche mit ihr durchgeführt werden.
Die interne Variable A_Now enthält die aktuelle Ortszeit im YYYYMMDDHH24MISS-Format.
-Mit DateDiff kann die Zeitspanne zwischen zwei Zeitstempeln berechnet werden.
+Mit DateDiff kann die Zeitdifferenz zwischen zwei Zeitstempeln berechnet werden.
Enthält DatumZeit einen ungültigen Zeitstempel oder ein Jahr älter als 1601, wird ein ValueError ausgelöst.
Addiert das heutige Datum um 31 Tage.
+Addiert 31 Tage auf das heutige Datum und meldet das Ergebnis in lesbarer Form.
-Zukunft := DateAdd(A_Now, 31, "days") +Zukunft := DateAdd(A_Now, 31, "d") MsgBox FormatTime(Zukunft)
Typ: Zeichenkette
Zeitstempel im YYYYMMDDHH24MISS-Format.
-Wenn DatumZeit1 älter als DatumZeit2 ist, wird das Ergebnis eine negative Zahl sein.
-Wenn einer der beiden Parameter eine leere Zeichenkette ist, wird die aktuelle Ortszeit (A_Now) verwendet.
+Wenn einer der Parameter eine leere Zeichenkette ist, wird die aktuelle Ortszeit (A_Now) verwendet.
Typ: Zeichenkette
-Das Einheitszeichen der Zeitdifferenz. ZeitEinheit kann eine der folgenden Zeichenketten sein (oder jeweils nur erste Buchstabe davon): Seconds, Minutes, Hours oder Days.
+Die Einheit, in der die Differenz gemessen werden soll. ZeitEinheit kann eine der folgenden Zeichenketten sein (oder jeweils nur der erste Buchstabe davon): Seconds, Minutes, Hours oder Days.
Typ: Integer
-Diese Funktion gibt die Differenz zwischen zwei Zeitstempeln in der angegebenen ZeitEinheit zurück. Das Ergebnis wird immer auf die nächste ganze Zahl abgerundet. Wenn z.B. die tatsächliche Differenz zwischen zwei Zeitstempeln 1.999 Tage beträgt, wäre das gemeldete Ergebnis 1 Tag. Um eine höhere Genauigkeit zu erzielen, geben Sie für ZeitEinheit das Wort Seconds an und teilen Sie das Ergebnis durch 60.0, 3600.0 oder 86400.0.
+Diese Funktion gibt die Differenz zwischen zwei Zeitstempeln in der angegebenen ZeitEinheit zurück. Wenn DatumZeit1 älter als DatumZeit2 ist, wird eine negative Zahl zurückgegeben.
+Das Ergebnis wird immer auf die nächste ganze Zahl abgerundet. Wenn z.B. die tatsächliche Differenz zwischen zwei Zeitstempeln 1.999 Tage beträgt, wäre das gemeldete Ergebnis 1 Tag. Um eine höhere Genauigkeit zu erzielen, geben Sie für ZeitEinheit das Wort Seconds an und teilen Sie das Ergebnis durch 60.0, 3600.0 oder 86400.0.
Die interne Variable A_Now enthält die aktuelle Ortszeit im YYYYMMDDHH24MISS-Format.
Um die verstrichene Zeit zwischen zwei Ereignissen genau zu bestimmen, verwenden Sie die A_TickCount-Methode, weil sie eine Präzision im Millisekundenbereich ermöglicht.
-Mit DateAdd können Sekunden, Minuten, Stunden oder Tage mit einem Zeitstempel addiert oder subtrahiert werden (mit einer negativen Zahl wird eine Subtraktion erreicht).
+Mit DateAdd können Sekunden, Minuten, Stunden oder Tage zu einem Zeitstempel addiert oder davon subtrahiert werden (mit einer negativen Zahl wird eine Subtraktion erreicht).
Enthält DatumZeit einen ungültigen Zeitstempel oder ein Jahr älter als 1601, wird ein ValueError ausgelöst.
Berechnet die Anzahl der Tage zwischen zwei Zeitstempeln und meldet das Ergebnis.
var1 := "20050126" var2 := "20040126" -MsgBox DateDiff(var1, var2, "days") ; Das Ergebnis ist 366, weil 2004 ein Schaltjahr ist. +MsgBox DateDiff(var1, var2, "d") ; Das Ergebnis ist 366, weil 2004 ein Schaltjahr ist.
Wenn DetectHiddenText nicht verwendet wird, ist die Einstellung standardmäßig 1 (true).
-"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. Mit dem internen Tool "Window Spy" kann ermittelt werden, welcher Text des gerade aktiven Fensters versteckt ist. Alle internen Funktionen, die einen FensterText-Parameter akzeptieren, sind davon betroffen, einschließlich WinActivate, WinActive, WinWait und WinExist.
+"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. Mit dem internen Tool "Window Spy" kann ermittelt werden, welcher Text des gerade aktiven Fensters versteckt ist. Alle internen Funktionen, die einen FensterText-Parameter akzeptieren, sind von dieser Einstellung betroffen, einschließlich WinActivate, WinActive, WinWait und WinExist.
Die interne Variable A_DetectHiddenText enthält die aktuelle Einstellung (1 oder 0).
-Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet vorerst die Standardeinstellung der Funktion. Um diese zu ändern, nutzen Sie die Funktion während der Startphase des Skripts.
+Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet zunächst die Standardeinstellung der Funktion. Diese Standardeinstellung kann geändert werden, indem die Funktion während der Startphase des Skripts verwendet wird.
Wenn DetectHiddenWindows nicht verwendet wird, ist die Einstellung standardmäßig 0 (false).
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. Allerdings kann diese Einstellung nützlich sein, wenn Sie direkt mit versteckten Fenstern arbeiten möchten, ohne diese vorher mit WinShow sichtbar zu machen.
-Alle fensterspezifischen Funktionen, außer WinShow, sind von dieser Einstellung betroffen, einschließlich WinActivate, WinActive, WinWait und WinExist. Beachten Sie, dass WinShow immer in der Lage ist, ein verstecktes Fenster sichtbar zu machen, unabhängig von dieser Einstellung.
+Alle fensterspezifischen Funktionen außer WinShow sind von dieser Einstellung betroffen, einschließlich WinActivate, WinActive, WinWait und WinExist. 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 in den folgenden Fällen nicht erforderlich:
WinShow(A_ScriptHwnd)
.WinMoveTop(MeineGui)
.WinMoveTop(MeineGui)
.Getarnte Fenster werden auch als versteckt betrachtet. Getarnte Fenster wurden mit Windows 8 eingeführt und sind Fenster auf einem inaktiven virtuellen Desktop oder UWP-Anwendungen, die zur Verbesserung der Performanz, genauer gesagt zur Verringerung ihres Speicherverbrauchs, unterbrochen wurden. In Windows 10 werden die Prozesse solcher Fenster im Task-Manager mit einem grünen Blatt angezeigt. Solche Fenster sind für den Benutzer trotz des WS_VISIBLE-Styles verborgen.
Die interne Variable A_DetectHiddenWindows enthält die aktuelle Einstellung (1 oder 0).
-Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet vorerst die Standardeinstellung der Funktion. Um diese zu ändern, nutzen Sie die Funktion während der Startphase des Skripts.
+Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet zunächst die Standardeinstellung der Funktion. Diese Standardeinstellung kann geändert werden, indem die Funktion während der Startphase des Skripts verwendet wird.
Schaltet die Erkennung von versteckten Fenstern ein.
-DetectHiddenWindows True+
DetectHiddenWindows true
Es wird eine Ausnahme ausgelöst, wenn ein Fehler auftritt.
-Enthält das Quellverzeichnis eine gespeicherte Webseite, bestehend aus Seitenname.htm und dem dazugehörigen Verzeichnis Seitenname_Dateien, kann es vorkommen, dass eine Ausnahme ausgelöst wird, obwohl das Kopieren erfolgreich war.
+Enthält das Quellverzeichnis eine gespeicherte Webseite, die aus Seitenname.htm und dem zugehörigen Verzeichnis Seitenname_Dateien besteht, kann eine Ausnahme ausgelöst werden, auch wenn der Kopiervorgang erfolgreich war.
Wenn die Verzeichnisstruktur des Ziels nicht vorhanden ist, wird sie automatisch erstellt, falls möglich.
-Da die Operation in der Lage ist, einen Ordner mit all seinen Unterordnern und Dateien rekursiv zu kopieren, ist das Ergebnis beim Kopieren eines Ordners auf ein Ziel irgendwo in sich selbst nicht definiert. Um dieses Problem zu umgehen, kopieren Sie den Ordner zuerst irgendwo anders hin und verwenden Sie danach DirMove, um den kopierten Ordner auf die gewünschte Position zu verschieben.
+Da die Operation in der Lage ist, einen Ordner mit all seinen Unterordnern und Dateien rekursiv zu kopieren, ist das Ergebnis beim Kopieren eines Ordners auf ein Ziel irgendwo in sich selbst nicht definiert. Um das zu umgehen, kopieren Sie den Ordner zuerst irgendwo anders hin und verwenden Sie danach DirMove, um den kopierten Ordner an den gewünschten Ort zu verschieben.
DirCopy kopiert nur einen einzigen Ordner. Um stattdessen den kompletten Inhalt eines Ordners (all seine Dateien und Unterordner) zu kopieren, verwenden Sie das Beispiel ganz am Ende der FileCopy-Seite.
DirMove, FileCopy, FileMove, FileDelete, Datei-Schleife, DirSelect, SplitPath
@@ -62,11 +62,11 @@Fordert den Benutzer auf, einen Ordner zu kopieren.
-QuelleOrdner := DirSelect(, 3, "Wähle den Ordner, der kopiert werden soll") +QuelleOrdner := DirSelect(, 3, "Wählen Sie den Ordner aus, der kopiert werden soll") if QuelleOrdner = "" return ; Andernfalls fortfahren. -ZielOrdner := DirSelect(, 3, "Wähle den Ordner, der die Kopie des Ordners enthalten soll.") +ZielOrdner := DirSelect(, 3, "Wählen Sie den Ordner aus, der die Kopie des Ordners enthalten soll.") if ZielOrdner = "" return ; Andernfalls fortfahren. @@ -77,7 +77,7 @@Beispiele
try DirCopy QuelleOrdner, ZielOrdner "\" QuelleOrdnerName catch - MsgBox "Der Ordner konnte nicht kopiert werden, weil ein Ordner mit demselben Namen in '" ZielOrdner "' vermutlich bereits existiert." + MsgBox "Der Ordner konnte nicht kopiert werden, vermutlich weil in '" ZielOrdner "' bereits ein Ordner mit diesem Namen existiert." return
A_LastError wird auf das Ergebnis der Systemfunktion GetLastError() gesetzt.
Diese Funktion erstellt auch alle übergeordneten Verzeichnisse, die in VerzName vorkommen, falls sie noch nicht vorhanden sind.
+Diese Funktion erstellt auch alle in VerzName angegebenen Elternverzeichnisse, falls diese noch nicht existieren.
Entfernt das Verzeichnis, einschließlich dessen Dateien und Unterverzeichnisse.
-DirDelete "C:\Download-Temp", 1+
DirDelete "C:\Download-Temp", true
Typ: Zeichenkette
-Diese Funktion gibt die Attribute des ersten passenden Ordners zurück. Diese Zeichenkette ist eine Teilmenge von RASHDOC
, wovon jeder Buchstabe die folgende Bedeutung hat:
Diese Funktion gibt die Attribute des ersten gefundenen Ordners zurück. Diese Zeichenkette ist eine Teilmenge von RASHDOC
, wobei jeder Buchstabe die folgende Bedeutung hat:
Da diese Funktion nur prüft, ob ein Ordner existiert, ist "D" immer im Rückgabewert enthalten. Wenn keine Ordner gefunden werden konnten, wird eine leere Zeichenkette zurückgegeben.
+Da diese Funktion nur prüft, ob ein Ordner existiert, ist "D" immer im Rückgabewert enthalten. Wenn kein Ordner gefunden wurde, wird eine leere Zeichenkette zurückgegeben.
Beachten Sie, dass eine Suche wie DirExist("OrdnerMitDateienUndUnterordner\*")
nur anzeigt, ob ein Ordner existiert. Wenn Sie prüfen wollen, ob Dateien und Ordner existieren, verwenden Sie stattdessen FileExist.
Beachten Sie, dass eine Suche wie DirExist("OrdnerMitDateienUndUnterordner\*")
nur anzeigt, ob ein Ordner existiert. Um zu prüfen, ob Dateien und Ordner existieren, verwenden Sie stattdessen FileExist.
Im Gegensatz zu FileGetAttrib unterstützt DirExist Platzhaltermuster und gibt immer einen nicht-leeren Wert zurück, wenn ein passender Ordner gefunden wurde.
Da eine leere Zeichenkette als "falsch" angesehen wird, kann der Rückgabewert der Funktion immer als boolescher Scheinwert verwendet werden. Zum Beispiel ist die Anweisung if DirExist("C:\MeinOrdner")
wahr, wenn der Ordner existiert, andernfalls falsch.
Da DateiMuster auch Platzhalterzeichen enthalten kann, ist DirExist möglicherweise nicht geeignet, um zu prüfen, ob ein Ordnerpfad gültig ist, der in Verbindung mit einer anderen Funktion oder einem anderen Programm verwendet werden soll. Zum Beispiel kann DirExist("Program*")
Attribute zurückgeben, auch dann, wenn "Program*" kein gültiger Dateiname ist. Für solche Fälle wird FileGetAttrib empfohlen.
Da DateiMuster auch Platzhalterzeichen enthalten kann, ist DirExist möglicherweise nicht geeignet, um zu prüfen, ob ein Ordnerpfad gültig ist, der in Verbindung mit einer anderen Funktion oder einem anderen Programm verwendet werden soll. Zum Beispiel kann DirExist("Program*")
Attribute zurückgeben, auch dann, wenn "Program*" kein gültiger Ordnername ist. Für solche Fälle wird FileGetAttrib empfohlen.
FileExist, FileGetAttrib, Datei-Schleife
@@ -65,7 +65,7 @@Zeigt ein Mitteilungsfenster an, wenn ein Ordner nicht existiert.
+Zeigt ein Mitteilungsfenster an, wenn ein Ordner nicht existiert.
if not DirExist("C:\Temp") MsgBox "Der Zielordner existiert nicht."
Es wird eine Ausnahme ausgelöst, wenn ein Fehler auftritt.
DirMove verschiebt nur einen einzigen Ordner auf eine neue Position. Um stattdessen den kompletten Inhalt eines Ordners (all seine Dateien und Unterordner) zu verschieben, verwenden Sie das Beispiel ganz am Ende der FileMove-Seite.
+DirMove verschiebt nur einen einzelnen Ordner an einen neuen Ort. Um stattdessen den kompletten Inhalt eines Ordners (all seine Dateien und Unterordner) zu verschieben, verwenden Sie das Beispiel ganz am Ende der FileMove-Seite.
Wenn sich Quelle und Ziel auf unterschiedlichen Datenträgern oder UNC-Pfaden befinden, wird Kopieren/Löschen statt Verschieben durchgeführt.
DirCopy, FileCopy, FileMove, FileDelete, Datei-Schleife, DirSelect, SplitPath
diff --git a/target/docs/lib/DirSelect.htm b/target/docs/lib/DirSelect.htm index ae2aacc8..76d77087 100644 --- a/target/docs/lib/DirSelect.htm +++ b/target/docs/lib/DirSelect.htm @@ -23,8 +23,8 @@Typ: Zeichenkette
-Wenn leer oder weggelassen, beginnt die Navigation standardmäßig im Benutzerordner "Eigene Dokumente" (oder eventuell Arbeitsplatz/Computer). Ein CLSID-Ordner wie "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
(Arbeitsplatz/Computer) kann angegeben werden, um die Navigation in einem bestimmten Spezialordner zu beginnen.
Andernfalls wird dieser Parameter hauptsächlich verwendet, um ein Sternchen einzufügen und direkt danach den absoluten Pfadnamen des Laufwerks oder Ordners anzugeben, der vorab ausgewählt sein soll. Zum Beispiel würde "*C:\"
bewirken, dass das C-Laufwerk zu Beginn ausgewählt ist. "*C:\Mein Ordner"
würde bewirken, dass genau dieser Ordner zu Beginn ausgewählt ist.
Wenn leer oder weggelassen, beginnt die Navigation standardmäßig im Ordner "Dokumente" des Benutzers oder evtl. "Dieser PC" (ehemals Arbeitsplatz oder Computer). Ein CLSID-Ordner wie "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
(Dieser PC) kann angegeben werden, um die Navigation in einem bestimmten Spezialordner zu beginnen.
Andernfalls wird dieser Parameter hauptsächlich verwendet, um ein Sternchen einzufügen und direkt danach den absoluten Pfadnamen des Laufwerks oder Ordners anzugeben, der vorab ausgewählt sein soll. Zum Beispiel würde "*C:\"
vorab das C-Laufwerk auswählen und "*C:\Mein Ordner"
vorab diesen konkreten Ordner auswählen.
Das Sternchen bewirkt, dass der Benutzer vom Startordner aus nach oben (näher zum Stammverzeichnis) navigieren darf. Ohne Sternchen wäre der Benutzer gezwungen, einen Ordner innerhalb von StartOrdner (oder StartOrdner selbst) auszuwählen. Das Weglassen des Sternchens hat z.B. den Vorteil, dass StartOrdner zu Beginn im aufgeklappten Zustand angezeigt wird, was dem Benutzer das Anklicken des ersten Pluszeichens erspart.
Wenn das Sternchen vorhanden ist, kann die Aufwärtsnavigation optional auf einen anderen Ordner als den Desktop beschränkt werden. Stellen Sie dem Sternchen einfach den absoluten Pfad des obersten Ordners voran, gefolgt von genau einem Leer- oder Tabulatorzeichen. Zum Beispiel würde "C:\Mein Ordner *C:\Mein Ordner\Projekte"
dem Benutzer verbieten, höher als C:\Mein Ordner zu navigieren (allerdings wäre C:\Mein Ordner\Projekte vorab ausgewählt).
Typ: Integer
Wenn weggelassen, wird standardmäßig 1 verwendet. Andernfalls geben Sie eine der folgenden Zahlen an:
-0: Keine der folgenden Optionen ist wirksam (in Windows 2000 könnte dennoch die Schaltfläche "Neuer Ordner" angezeigt werden).
+0: Keine der folgenden Optionen ist wirksam.
1: Zeigt eine Schaltfläche an, die der Benutzer zum Erstellen neuer Ordner verwenden kann.
Addieren Sie 2 zur obigen Zahl, um ein Eingabefeld anzuzeigen, das der Benutzer zum Eintragen eines Ordnernamens verwenden kann. Wenn dieser Parameter z.B. 3 ist, wird sowohl ein Eingabefeld als auch die Schaltfläche "Neuer Ordner" angezeigt.
-Addieren Sie 4 zur obigen Zahl, um die Eigenschaft BIF_NEWDIALOGSTYLE zu entfernen. Dadurch wird sichergestellt, dass DirSelect auch in einer vorinstallierten Umgebung wie WinPE oder BartPE funktioniert, aber verhindert, dass die Schaltfläche "Neuer Ordner" vorhanden ist.
-Wenn der Benutzer den Namen eines ungültigen Ordners in das Eingabefeld einträgt, wird AusgewählterOrdner auf einen Wert gesetzt, der nicht den eingetragenen Text, sondern den im Navigationsbereich ausgewählten Ordner repräsentiert.
+Addieren Sie 4 zur obigen Zahl, um die Eigenschaft BIF_NEWDIALOGSTYLE zu entfernen. Dadurch wird sichergestellt, dass DirSelect auch in einer vorinstallierten Umgebung wie WinPE oder BartPE funktioniert, verhindert aber, dass die Schaltfläche "Neuer Ordner" angezeigt wird.
+Wenn der Benutzer einen ungültigen Ordnernamen in das Eingabefeld einträgt, wird AusgewählterOrdner auf den im Navigationsbereich ausgewählten Ordner gesetzt, nicht auf den vom Benutzer eingetragenen Text.
Typ: Zeichenkette
-Diese Funktion gibt den vollständigen Pfad und Namen des vom Benutzer ausgewählten Ordners zurück. Wenn der Benutzer das Dialogfenster abbricht (bzw. keinen Ordner auswählen möchte), wird eine leere Zeichenkette zurückgegeben. Wenn der Benutzer ein Root-Verzeichnis auswählt (z.B. C:\), endet der Rückgabewert mit einem umgekehrten Schrägstrich. Falls das unerwünscht ist, kann der Schrägstrich wie folgt entfernt werden:
+Diese Funktion gibt den vollständigen Pfad und Namen des vom Benutzer ausgewählten Ordners zurück. Wenn der Benutzer das Dialogfenster abbricht (also keinen Ordner auswählen möchte), wird eine leere Zeichenkette zurückgegeben. Wenn der Benutzer ein Stammverzeichnis auswählt (z.B. C:\), endet der Rückgabewert mit einem umgekehrten Schrägstrich. Falls das unerwünscht ist, kann der Schrägstrich wie folgt entfernt werden:
Ordner := RegExReplace(DirSelect(), "\\$") ; Entfernt den umgekehrten Schrägstrich am Ende, falls vorhanden.-
Es wird auch eine leere Zeichenkette zurückgegeben, wenn das Betriebssystem sich weigert, das Dialogfenster anzuzeigen, aber dieses Problem tritt nur sehr selten auf.
+Eine leere Zeichenkette wird auch zurückgegeben, wenn das Betriebssystem sich weigert, das Dialogfenster anzuzeigen, was jedoch sehr selten vorkommt.
Ein typisches Ordnerauswahlfenster sieht wie folgt aus:
@@ -73,8 +73,8 @@Ein CLSID-Beispiel. Ermöglicht dem Benutzer die Auswahl eines Ordners im "Dieser PC"-Verzeichnis.
-AusgewählterOrdner := DirSelect("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}") ; Dieser PC.+
Ein CLSID-Beispiel. Ermöglicht dem Benutzer die Auswahl eines Ordners in Dieser PC (ehemals Arbeitsplatz oder Computer).
+AusgewählterOrdner := DirSelect("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")
Typ: Zeichenkette oder Integer
-Der Name einer DLL- oder EXE-Datei, gefolgt von einem umgekehrten Schrägstrich und dem Namen der Funktion. Zum Beispiel: "MeineDLL\MeineFunktion"
(wenn die Dateiendung weggelassen wird, wird standardmäßig ".dll" verwendet). Wenn kein absoluter Pfad angegeben ist, wird DllDatei in einem der Pfade aus der PATH-Umgebungsvariable oder im A_WorkingDir-Verzeichnis vermutet. Beachten Sie, dass DllCall einen Pfad mit umgekehrten Schrägstrichen (\) erwartet. Schrägstriche (/) werden nicht unterstützt.
DllDatei kann weggelassen werden, wenn eine Funktion aus den Systemdateien User32.dll, Kernel32.dll, ComCtl32.dll oder Gdi32.dll aufgerufen wird. Zum Beispiel liefert "User32\IsWindowVisible"
das gleiche Ergebnis wie "IsWindowVisible"
.
Wenn keine Funktion unter dem angegebenen Namen gefunden werden kann, wird automatisch ein W (Unicode) angefügt. Zum Beispiel ist "MessageBox"
das gleiche wie "MessageBoxW"
.
Wenn die DLL wiederholt aufgerufen wird, ist es ratsam, sie vorher zu laden, um die Performanz dramatisch zu erhöhen.
-Dieser Parameter kann auch ein reiner Integer sein, der als Adresse einer Funktion zum Aufrufen interpretiert wird. Quellen solcher Adressen sind unter anderem COM und CallbackCreate.
+Der Name einer DLL- oder EXE-Datei, gefolgt von einem umgekehrten Schrägstrich und dem Namen der Funktion. Zum Beispiel: "MeineDLL\MeineFunktion"
(wenn die Dateiendung weggelassen wird, wird standardmäßig ".dll" verwendet). Wenn kein absoluter Pfad angegeben ist, wird DllDatei in einem der Pfade aus der PATH-Umgebungsvariable oder im A_WorkingDir-Verzeichnis vermutet. Beachten Sie, dass DllCall einen Pfad mit umgekehrten Schrägstrichen (\) erwartet. Nach rechts gerichtete Schrägstriche (/) werden nicht unterstützt.
DllDatei kann weggelassen werden, wenn eine Funktion aus den Systemdateien User32.dll, Kernel32.dll, ComCtl32.dll oder Gdi32.dll aufgerufen wird. Zum Beispiel liefert "User32\IsWindowVisible"
dasselbe Ergebnis wie "IsWindowVisible"
.
Wenn unter dem angegebenen Namen keine Funktion gefunden wird, wird automatisch ein W (Unicode) angefügt. Zum Beispiel ist "MessageBox"
dasselbe wie "MessageBoxW"
.
Wenn die DLL wiederholt aufgerufen wird, ist es ratsam, sie vorher zu laden, um die Performanz drastisch zu erhöhen.
+Dieser Parameter kann auch ein reiner Integer sein, der als Adresse einer Funktion zum Aufrufen interpretiert wird. Quellen für solche Adressen sind u.a. COM und CallbackCreate.
Wenn dieser Parameter ein Objekt ist, wird der Wert der Ptr
-Eigenschaft des Objekts verwendet. Wenn diese Eigenschaft nicht existiert, wird ein PropertyError ausgelöst.
Typ: Zeichenkette
-Das Wort Cdecl wird normalerweise weggelassen, da die meisten Funktionen die Standardaufrufkonvention anstelle der C-Aufrufkonvention verwenden (Funktionen wie wsprintf, die eine unterschiedliche Anzahl von Argumenten akzeptieren, sind eine Ausnahme). Beachten Sie, dass die meisten objektorientierten C++-Funktionen die thiscall-Konvention nutzen, die in AutoHotkey nicht unterstützt wird.
+Das Wort Cdecl wird normalerweise weggelassen, da die meisten Funktionen die Standardaufrufkonvention anstelle der C-Aufrufkonvention verwenden (Funktionen wie wsprintf, die eine unterschiedliche Anzahl von Argumenten akzeptieren, sind eine Ausnahme). Beachten Sie, dass die meisten objektorientierten C++-Funktionen die nicht unterstützte thiscall-Konvention verwenden.
Das Wort Cdecl muss vor dem Rückgabetyp (falls vorhanden) stehen. Trennen Sie alle Wörter jeweils durch ein Leer- oder Tabulatorzeichen. Zum Beispiel: "Cdecl Str"
.
Da eine separate C-Aufrufkonvention im 64-Bit-Code nicht existiert, ist die Angabe von Cdecl in 64-Bit-Versionen von AutoHotkey wirkungslos.
+Da es im 64-Bit-Code keine separate C-Aufrufkonvention gibt, hat die Angabe von Cdecl in 64-Bit-Builds von AutoHotkey keine Wirkung.
RückgabeTyp: Wenn die Funktion einen vorzeichenfähigen 32-Bit-Integer (Int), BOOL oder nichts zurückgibt, kann RückgabeTyp weggelassen werden. Andernfalls geben Sie einen der Argumenttypen aus der Typentabelle unten an. Das Sternchen-Suffix wird ebenfalls unterstützt.
Typ: Zeichenkette oder Integer
-DllCall gibt den Rückgabewert von Funktion zurück. Wenn Funktion vom Typ ist, der keinen Wert zurückgibt, ist das Ergebnis ein undefinierter Wert des angegebenen Rückgabetyps (standardmäßig Integer).
+DllCall gibt den Rückgabewert von Funktion zurück. Wenn Funktion keinen Rückgabewert hat, ist das Ergebnis ein undefinierter Wert des angegebenen Rückgabetyps (standardmäßig Integer).
Str |
- Eine Zeichenkette wie z.B. Wenn die Funktion so ausgelegt ist, dass sie eine Zeichenkette länger als der Eingabewert des Parameters speichert (oder wenn der Parameter nur für die Ausgabe vorgesehen ist), wird folgende Vorgehensweise empfohlen: Erstellen Sie ein Buffer-Objekt, nutzen Sie den Ptr-Typ, um ihn zu übergeben, und nutzen Sie StrGet, um die Zeichenkette nach Abschluss der Funktion abzurufen, wie im wsprintf-Beispiel gezeigt. -Andernfalls stellen Sie sicher, dass die Variable vor dem Aufruf der Funktion groß genug ist. Um das zu erreichen, können Sie Eine Zeichenkette wie z.B. Wenn die Funktion eine Zeichenkette zurückgibt, die länger ist als der Eingabewert des Parameters (oder wenn der Parameter nur für die Ausgabe bestimmt ist), wird die folgende Vorgehensweise empfohlen: 1) Erstellen Sie ein Buffer, 2) übergeben Sie es mit dem Ptr-Typ, und 3) rufen Sie die Zeichenkette nach Abschluss der Funktion mit StrGet ab, wie im wsprintf-Beispiel gezeigt. +Andernfalls sollten Sie vor dem Funktionsaufruf sicherstellen, dass die Variable groß genug ist. Rufen Sie hierfür Ein Str-Argument darf kein Ausdruck sein, der nach der Auswertung eine Zahl ergibt (z.B. Der selten verwendete Str*-Argumenttyp übergibt die Adresse einer temporären Variable, die die Adresse der Zeichenkette enthält. Wenn die Funktion eine neue Adresse in die temporäre Variable schreibt, wird die neue Zeichenkette in die Variable des Skripts kopiert, sofern eine VarRef übergeben wurde. Dies kann in Verbindung mit Funktionen verwendet werden, die so etwas wie "TCHAR **" oder "LPTSTR *" erwarten. Wenn die Funktion jedoch Speicher reserviert und erwartet, dass der Aufrufer ihn freigibt (z.B. durch Aufruf von CoTaskMemFree), muss stattdessen der Der selten verwendete Str*-Argumenttyp übergibt die Adresse einer temporären Variable, die die Adresse der Zeichenkette enthält. Wenn die Funktion eine neue Adresse in die temporäre Variable schreibt, wird die neue Zeichenkette in die Variable des Skripts kopiert, sofern eine VarRef übergeben wurde. Dies kann für Funktionen verwendet werden, die so etwas wie "TCHAR **" oder "LPTSTR *" erwarten. Wenn die Funktion jedoch Speicher reserviert und erwartet, dass der Aufrufer ihn wieder freigibt (z.B. durch Aufruf von CoTaskMemFree), muss stattdessen der Hinweis: Wenn Sie eine Zeichenkette an eine Funktion übergeben, müssen Sie darauf achten, welchen Typ von Zeichenkette die Funktion erwartet. |
|
WStr | -Da AutoHotkey standardmäßig UTF-16 verwendet, ist WStr (Wide Character String) äquivalent zu Str. | +Da AutoHotkey nativ UTF-16 verwendet, ist WStr (Wide Character String) äquivalent zu Str. |
AStr |
- AStr bewirkt, dass der Eingabewert automatisch in ANSI umgewandelt wird. Da der für diese Konvertierung verwendete temporäre Speicher nur groß genug für die konvertierte Eingabezeichenkette ist, werden alle Werte, die die Funktion in diese Zeichenkette schreibt, verworfen. Das folgende Beispiel zeigt, wie eine ANSI-Zeichenkette als Ausgabeparameter abgerufen werden kann: +AStr bewirkt, dass der Eingabewert automatisch in ANSI umgewandelt wird. Da der für diese Umwandlung verwendete temporäre Speicher nur groß genug für die umgewandelte Eingabezeichenkette ist, werden alle Werte, die die Funktion in diese Zeichenkette schreibt, verworfen. Um eine ANSI-Zeichenkette als Ausgabeparameter zu empfangen, gehen Sie wie folgt vor: buf := Buffer(Länge) ; Temporären Pufferspeicher reservieren. -DllCall("Function", "ptr", buf) ; Pufferspeicher an Function übergeben. +DllCall("Funktion", "ptr", buf) ; Pufferspeicher an Funktion übergeben. str := StrGet(buf, "cp0") ; ANSI-Zeichenkette aus dem Pufferspeicher abrufen.- Der selten verwendete AStr*-Argumenttyp wird ebenfalls unterstützt und verhält sich ähnlich wie der Str*-Typ, außer dass jede neue Zeichenkette im ANSI-Format in das native Format (UTF-16) umgewandelt wird. +Der selten verwendete AStr*-Argumenttyp wird ebenfalls unterstützt und verhält sich ähnlich wie der Str*-Typ, außer dass jede neue Zeichenkette von ANSI in das native Format (UTF-16) umgewandelt wird. Weitere Informationen und äquivalente Win32-Typen finden Sie unter Binärkompatibilität. |
|
Ptr | -Ein pointergroßer Integer, der je nach AutoHotkey-Version (32- oder 64-Bit) einem Int oder Int64 entspricht. Ptr sollte für Pointer verwendet werden, die auf Arrays oder Strukturen verweisen (wie RECT* oder LPPOINT), und für fast alle Handles (wie HWND, HBRUSH oder HBITMAP). Wenn der Parameter ein Pointer ist, der auf einen einzelnen numerischen Wert verweist, wie z.B. LPDWORD oder int*, sollte grundsätzlich das *- oder P-Suffix anstelle von "Ptr" verwendet werden. -Übergibt man ein Objekt an einen Ptr-Parameter, wird der Wert der Übergibt man ein Objekt an einen Ptr*-Parameter, wird der Wert der | Ein pointergroßer Integer, äquivalent zu Int oder Int64, je nachdem, ob die EXE-Datei, die das Skript ausführt, 32-Bit oder 64-Bit ist. Ptr sollte für Pointer verwendet werden, die auf Arrays oder Strukturen verweisen (wie RECT* oder LPPOINT), und für fast alle Handles (wie HWND, HBRUSH oder HBITMAP). Wenn der Parameter ein Pointer ist, der auf einen einzelnen numerischen Wert verweist, wie z.B. LPDWORD oder int*, sollte grundsätzlich das *- oder P-Suffix anstelle von "Ptr" verwendet werden. +Wenn ein Objekt an einen Ptr-Parameter übergeben wird, wird der Wert der Wenn ein Objekt an einen Ptr*-Parameter übergeben wird, wird der Wert der Ptr kann auch mit dem *- oder P-Suffix verwendet werden; es sollte mit Funktionen verwendet werden, die einen Pointer via LPVOID* oder ähnliches zurückgeben. UPtr ist auch gültig, ist aber nur vorzeichenlos in 32-Bit-Builds, da AutoHotkey keine vorzeichenlosen 64-Bit-Integer unterstützt. Hinweis: Um ein NULL-Handle oder -Pointer zu übergeben, verwenden Sie den Integer 0. |
@@ -121,10 +121,10 @@
* oder P (Suffix) |
- Fügen Sie ein Sternchen (optional mit einem Leerzeichen davor) an einen der obigen Typen an, um nicht den Wert selbst, sondern die Adresse des Arguments zu übergeben (die aufgerufene Funktion muss dafür ausgelegt sein, so etwas zu akzeptieren). Der Wert eines solchen Arguments kann von der Funktion geändert werden, d.h. jedes Mal, wenn eine VarRef als Argument übergeben wird, wird der Inhalt der Variable nach Abschluss der Funktion aktualisiert. Zum Beispiel würde der folgende Aufruf den Inhalt von MeineVar an MeineFunktion via Adresse übergeben, aber auch den Inhalt von MeineVar aktualisieren, um alle Änderungen widerzuspiegeln, die MeineFunktion an MeineVar vorgenommen hat: In der Regel wird ein Sternchen verwendet, wenn eine Funktion einen Argument- oder Rückgabetyp hat, der mit "LP" beginnt. Das bekannteste Beispiel dafür ist LPDWORD (ein Pointer, der auf ein DWORD verweist). Da DWORD ein vorzeichenloser 32-Bit-Integer ist, können Sie "UInt*" oder "UIntP" für LPDWORD verwenden. Zeichenkettentypen wie LPTSTR, auf Strukturen verweisende Pointer wie LPRECT, oder Arrays sollten nicht mit einem Sternchen versehen werden; für solche Typen ist "Str" oder "Ptr" besser geeignet, je nachdem, ob eine Zeichenkette, Adresse oder Buffer übergeben wird. + | Fügen Sie ein Sternchen (optional mit einem Leerzeichen davor) an einen der obigen Typen an, um nicht den Wert selbst, sondern die Adresse des Arguments zu übergeben (die aufgerufene Funktion muss dafür ausgelegt sein, so etwas zu akzeptieren). Da der Wert eines solchen Arguments von der Funktion geändert werden kann, wird jedes Mal, wenn eine VarRef als Argument übergeben wird, der Inhalt der Variable nach Abschluss der Funktion aktualisiert. Zum Beispiel würde der folgende Aufruf den Inhalt von MeineVar an MeineFunktion via Adresse übergeben, aber auch den Inhalt von MeineVar aktualisieren, um alle Änderungen widerzuspiegeln, die MeineFunktion an MeineVar vorgenommen hat: In der Regel wird ein Sternchen verwendet, wenn eine Funktion einen Argument- oder Rückgabetyp hat, der mit "LP" beginnt. Das bekannteste Beispiel dafür ist LPDWORD (ein Pointer, der auf ein DWORD verweist). Da DWORD ein vorzeichenloser 32-Bit-Integer ist, können Sie "UInt*" oder "UIntP" für LPDWORD verwenden. Das Sternchen sollte nicht für Zeichenkettentypen wie LPTSTR, auf Strukturen verweisende Pointer wie LPRECT, oder Arrays verwendet werden; für solche Typen ist "Str" oder "Ptr" besser geeignet, je nachdem, ob eine Zeichenkette, eine Adresse oder ein Buffer übergeben wird. Hinweis: "Char*" ist nicht dasselbe wie "Str", weil "Char*" die Adresse einer 8-Bit-Zahl übergibt, während "Str" die Adresse einer Zeichenkette übergibt, die je nach AutoHotkey-Version 16-Bit (Unicode) oder 8-Bit (für "AStr") ist. Ähnlich verhält es sich mit "UInt*": Da dieser Typ die Adresse einer 32-Bit-Zahl übergibt, ist er nicht für Funktionen geeignet, die ein Array mit Werten oder eine Struktur größer als 32 Bit erwarten. -Da Variablen in AutoHotkey keinen festen Typ haben, bezieht sich eine an die Funktion übergebene Adresse auf einen temporären Speicher, nicht auf die Variable des Aufrufers. +Da Variablen in AutoHotkey keinen festen Typ haben, verweist eine an die Funktion übergebene Adresse auf einen temporären Speicher, nicht auf die Variable des Aufrufers. |
HRESULT |
- Ein 32-Bit-Integer. Dieser Typ wird grundsätzlich im Zusammenhang mit COM-Funktionen verwendet und ist nur als Rückgabetyp ohne Präfix oder Suffix gültig. Fehlerwerte (wie durch das FAILED-Makro definiert) werden nie zurückgegeben; stattdessen wird ein OSError ausgelöst. Daher ist der Rückgabewert ein Erfolgscode im Bereich von 0 bis 2147483647. -HRESULT ist der Standard-Rückgabetyp von ComCall. +Ein 32-Bit-Integer. Dies wird grundsätzlich für COM-Funktionen verwendet und ist nur als Rückgabetyp ohne Präfix oder Suffix gültig. Fehlerwerte (wie durch das FAILED-Makro definiert) werden nie zurückgegeben; stattdessen wird ein OSError ausgelöst. Daher ist der Rückgabewert ein Erfolgscode im Bereich von 0 bis 2147483647. +HRESULT ist der reguläre Rückgabetyp für ComCall. |
Exception.Extra
enthält den hexadezimalen Fehlercode.Exception.Extra
enthält den Ausnahmecode. 0xC0000005 bedeutet z.B. "Zugriffsverletzung". In solchen Fällen wird der Thread unterbrochen (wenn try nicht verwendet wird), während alle Sternchenvariablen weiter aktualisiert werden. Eine fatale Ausnahme ist zum Beispiel die Dereferenzierung eines ungültigen Pointers wie NULL (0). Da eine Cdecl-Funktion niemals den im nächsten Absatz beschriebenen Fehler erzeugt, löst die Funktion stattdessen eine Ausnahme aus, wenn ihr zu wenig Argumente übergeben werden.Exception.Extra
enthält die Anzahl der Bytes, um wie viel die Argumentenliste inkorrekt war. Wenn dieser Wert positiv ist, wurden zu viele Argumente (oder zu lange Argumente) übergeben, oder der Aufruf benötigt CDecl. Wenn dieser Wert negativ ist, wurden zu wenig Argumente übergeben. Dieser Fehler sollte behoben werden, um einen zuverlässigen Betrieb der Funktion zu gewährleisten. Dieser Fehler könnte auch ein Indikator dafür sein, dass eine Ausnahme aufgetreten ist. Beachten Sie, dass 64-Bit-Versionen von AutoHotkey aufgrund der x64-Aufrufkonvention nicht in der Lage sind, diesen Fehler auszulösen.Exception.Extra
enthält die Anzahl der Bytes, um wie viel die Argumentenliste inkorrekt war. Wenn es positiv ist, wurden zu viele Argumente (oder zu lange Argumente) übergeben, oder der Aufruf benötigt CDecl. Wenn es negativ ist, wurden zu wenig Argumente übergeben. Dieser Fehler sollte behoben werden, um einen zuverlässigen Betrieb der Funktion zu gewährleisten. Dieser Fehler könnte auch ein Indikator dafür sein, dass eine Ausnahme aufgetreten ist. Beachten Sie, dass 64-Bit-Builds von AutoHotkey aufgrund der x64-Aufrufkonvention nicht in der Lage sind, diesen Fehler auszulösen.Die interne Variable A_LastError enthält das Ergebnis der Systemfunktion GetLastError().
Wenn die DLL wiederholt aufgerufen wird, ist es ratsam, sie vorher zu laden, um die Performanz dramatisch zu erhöhen (das ist für eine Standard-DLL wie User32 nicht notwendig, da sie immer allgegenwärtig ist). Dadurch wird vermieden, dass DllCall jedes Mal LoadLibrary und FreeLibrary intern aufrufen muss. Zum Beispiel:
+Wenn die DLL wiederholt aufgerufen wird, ist es ratsam, sie vorher zu laden, um die Performanz drastisch zu erhöhen (das ist für eine Standard-DLL wie User32 nicht notwendig, da sie immer allgegenwärtig ist). Dadurch wird vermieden, dass DllCall jedes Mal LoadLibrary und FreeLibrary intern aufrufen muss. Zum Beispiel:
hModule := DllCall("LoadLibrary", "Str", "MeineFunktionen.dll", "Ptr") ; Verhindert, dass DllCall die Bibliothek in der Schleife laden muss. Loop Files, "C:\Meine Dokumente\*.*", "R" Ergebnis := DllCall("MeineFunktionen\DateiSichern", "Str", A_LoopFilePath) @@ -171,30 +171,30 @@-Performanz
MulDivProc := DllCall("GetProcAddress", "Ptr", DllCall("GetModuleHandle", "Str", "kernel32", "Ptr"), "AStr", "MulDiv", "Ptr") Loop 500 DllCall(MulDivProc, "Int", 3, "Int", 4, "Int", 3)
Wenn der erste Parameter von DllCall eine direkt geschriebene Zeichenkette wie "MulDiv"
ist und die DLL der entsprechenden Funktion vor dem Skriptstart normal geladen wird, oder erfolgreich mit #DllLoad geladen wurde, wird die Zeichenkette automatisch in eine Funktionsadresse aufgelöst. Diese interne Optimierung ist effizienter als das obige Beispiel.
Wenn der erste Parameter von DllCall eine direkt geschriebene Zeichenkette wie "MulDiv"
ist und die DLL der entsprechenden Funktion normal vor dem Start des Skripts geladen wird, oder erfolgreich mit #DllLoad geladen wurde, wird die Zeichenkette automatisch in eine Funktionsadresse aufgelöst. Diese interne Optimierung ist effizienter als das obige Beispiel.
Übergibt man eine Zeichenkettenvariable an eine Funktion, die die Länge der Zeichenkette nicht ändert, kann die Performanz erhöht werden, indem man die Variable per Adresse (z.B. StrPtr(MeineVar)
) statt als "str" übergibt (insbesondere dann, wenn die Zeichenkette sehr lang ist). Das folgende Beispiel wandelt alle Buchstaben einer Zeichenkette in Großbuchstaben um: DllCall("CharUpper", "Ptr", StrPtr(MeineVar), "Ptr")
.
Eine Struktur ist eine Sammlung von Elementen (Feldern), die nebeneinander im Speicher abgelegt sind. Die meisten Elemente sind für gewöhnlich Integer.
-Um Funktionen, die die Adresse einer Struktur (oder eines Speicherblock-Arrays) akzeptieren, aufzurufen, reservieren Sie Speicher auf irgendeine Weise und übergeben Sie die Speicheradresse an die Funktion. Hierfür wird das Buffer-Objekt empfohlen. In der Regel geht man wie folgt vor:
-1) Rufen Sie MeineStrukt := Buffer(123, 0)
auf, um Pufferspeicher für die Strukturdaten zu reservieren. Geben Sie für 123
die Größe der Struktur oder höher an (in Bytes). Die 0 im letzten Parameter ist optional und bewirkt, dass alle Strukturelemente mit einer binären Null initialisiert werden, um ein häufiges Aufrufen von NumPut wie im nächsten Schritt beschrieben zu verhindern.
2) Wenn die Zielfunktion bereits beim Aufrufen bestimmte Werte in der Struktur benötigt, können Sie NumPut("UInt", 123, MeineStrukt, 4)
verwenden, um ein Element auf einen bestimmten Wert zu setzen. Geben Sie für 123
den Integer an, der in das Strukturelement eingefügt werden soll (oder nutzen Sie StrPtr(Var)
, um die Adresse einer Zeichenkette zu speichern). Geben Sie für 4
den Offset des Strukturelements an (siehe Schritt #4, was ein "Offset" ist). Geben Sie für "UInt"
den entsprechenden Typ an (zum Beispiel "Ptr"
, wenn das Strukturelement ein Pointer oder Handle ist).
3) Rufen Sie die Zielfunktion auf und übergeben Sie MeineStrukt als Ptr-Argument. Zum Beispiel: DllCall("MeineDLL\MeineFunk", "Ptr", MeineStrukt)
. Die Funktion wird einige Elemente auswerten und/oder ändern. DllCall verwendet automatisch die Adresse des Puffers, die normalerweise mit MeineStrukt.Ptr
abgerufen werden kann.
Funktionen, die die Adresse einer Struktur (oder eines Speicherblock-Arrays) akzeptieren, können aufgerufen werden, indem man Speicher auf irgendeine Weise reserviert und die Speicheradresse an die Funktion übergibt. Hierfür wird das Buffer-Objekt empfohlen. In der Regel geht man wie folgt vor:
+1) Rufen Sie MeineStrukt := Buffer(123, 0)
auf, um Pufferspeicher für die Strukturdaten zu reservieren. Ersetzen Sie 123
mit einer Zahl, die mindestens der Größe der Struktur entspricht (in Bytes). Die 0 im letzten Parameter ist optional und bewirkt, dass alle Strukturelemente mit einer binären Null initialisiert werden, um häufige Aufrufe von NumPut zu vermeiden, wie im nächsten Schritt beschrieben.
2) Wenn die Zielfunktion bereits zu Beginn bestimmte Werte in der Struktur benötigt, rufen Sie NumPut("UInt", 123, MeineStrukt, 4)
auf, um ein beliebiges Element auf einen Wert ungleich 0 zu setzen. Ersetzen Sie 123
mit einem Integer, auf dem das Zielelement gesetzt werden soll (oder geben Sie StrPtr(Var)
an, um die Adresse einer Zeichenkette zu hinterlegen). Ersetzen Sie 4
mit dem Offset des Zielelements (siehe Schritt #4, was ein "Offset" ist). Ersetzen Sie "UInt"
mit dem entsprechenden Typ, z.B. "Ptr"
, wenn das Element ein Pointer oder Handle ist.
3) Rufen Sie die Zielfunktion auf und übergeben Sie MeineStrukt als Ptr-Argument. Zum Beispiel DllCall("MeineDLL\MeineFunk", "Ptr", MeineStrukt)
. Die Funktion wird einige Elemente auswerten und/oder ändern. DllCall verwendet automatisch die Adresse des Pufferspeichers, die normalerweise mit MeineStrukt.Ptr
abgerufen wird.
4) Verwenden Sie MeinInteger := NumGet(MeineStrukt, 4, "UInt")
, um einen beliebigen Integer aus der Struktur abzurufen. Ersetzen Sie 4
mit dem Offset des Zielelements in der Struktur. Das erste Element befindet sich immer auf Offset 0. Das zweite Element befindet sich auf Offset 0 plus der Größe des ersten Elements (typischerweise 4). Jedes nachfolgende Element befindet sich auf dem Offset des vorherigen Elements plus der Größe des vorherigen Elements. Die meisten Elemente -- wie z.B. DWORD, Int und andere Typen von 32-Bit-Integern -- haben eine Größe von 4 Bytes. Ersetzen Sie "UInt"
mit dem entsprechenden Typ oder lassen Sie es weg, wenn das Element ein Pointer oder Handle ist.
Beispiele für Strukturen finden Sie im Beispielabschnitt weiter unten.
Wenn die Adresse einer Zeichenkette in einer Variable (z.B. StrPtr(MeineVar)
) an eine Funktion übergeben wird und wenn diese Funktion die Länge des Variableninhalts ändert, kann es passieren, dass diese Variable bei späterem Gebrauch ein fehlerhaftes Verhalten aufweist. Um das zu verhindern, gibt es folgende Lösungsmöglichkeiten: 1) Übergeben Sie MeineVar nicht als Ptr/Adresse, sondern als "Str"-Argument; 2) Rufen Sie VarSetStrCapacity(MeineVar, -1)
auf, um die intern gespeicherte Länge der Variable nach dem Aufruf von DllCall zu aktualisieren.
Eine binäre Null innerhalb einer Variable wird als Terminator behandelt und bewirkt, dass alle rechts befindlichen Daten von den meisten internen Funktionen weder abgerufen noch geändert werden können. Solche Daten können aber manipuliert werden, indem Sie die Adresse der Zeichenkette via StrPtr abrufen und diese Adresse an andere Funktionen wie NumPut, NumGet, StrGet, StrPut und DllCall selbst übergeben.
-Eine Funktion, die die Adresse einer der ihr übergebenen Zeichenketten zurückgibt, kann eine identische Zeichenkette zurückgeben, die auf einer anderen Speicheradresse liegt als erwartet. Zum Beispiel würde der Aufruf von CharLower(CharUpper(MeineVar))
in einer anderen Programmiersprache bewirken, dass der Inhalt von MeineVar in Kleinbuchstaben umgewandelt wird. Nutzt man stattdessen DllCall wie unten gezeigt, bleibt der Inhalt von MeineVar groß geschrieben, weil CharLower eine andere/temporäre Zeichenkette verarbeitet hat, die identisch zum Inhalt von MeineVar ist:
Übergibt man die Zeichenkettenadresse einer Variable (z.B. StrPtr(MeineVar)
) an eine Funktion, die die Länge des Variableninhalts ändert, kann es vorkommen, dass die Variable bei späterer Verwendung ein fehlerhaftes Verhalten aufweist. Um das zu verhindern, gibt es folgende Lösungsmöglichkeiten: 1) Übergeben Sie MeineVar als "Str"-Argument, nicht als Ptr/Adresse; 2) Rufen Sie VarSetStrCapacity(MeineVar, -1)
auf, um die intern gespeicherte Länge der Variable nach dem Aufruf von DllCall zu aktualisieren.
Eine binäre Null, die von einer Funktion in einer Variable hinterlegt wurde, kann als Terminator fungieren, wodurch alle Daten rechts von der Null von den meisten internen Funktionen weder abgerufen noch geändert werden können. Allerdings können solche Daten manipuliert werden, indem die Adresse der Zeichenkette via StrPtr abgerufen und an andere Funktionen wie NumPut, NumGet, StrGet, StrPut und DllCall selbst übergeben wird.
+Eine Funktion, die die Adresse einer der ihr übergebenen Zeichenketten zurückgibt, kann eine identische Zeichenkette zurückgeben, die auf einer anderen Speicheradresse liegt als erwartet. Zum Beispiel würde der Aufruf von CharLower(CharUpper(MeineVar))
in einer anderen Programmiersprache bewirken, dass der Inhalt von MeineVar in Kleinbuchstaben umgewandelt wird. Aber wenn dasselbe mit DllCall gemacht wird, wäre MeineVar nach dem folgenden Aufruf in Großbuchstaben, weil CharLower mit einer anderen/temporären Zeichenkette gearbeitet hat, die mit MeineVar identisch ist:
MeineVar := "ABC" Ergebnis := DllCall("CharLower", "Str", DllCall("CharUpper", "Str", MeineVar, "Str"), "Str")
Um das zu umgehen, ersetzen Sie oben die zwei unterstrichenen "Str"-Werte mit Ptr. Dadurch wird sichergestellt, dass der Rückgabewert von CharUpper als reine Adresse interpretiert wird, die dann als Integer an CharLower übergeben wird.
Beim Umgang mit Zeichenketten kann es zu Einschränkungen kommen. Weitere Informationen finden Sie unter Binärkompatibilität.
COM-Objekte, die für VBScript und ähnliche Sprachen zugänglich sind, können in der Regel via ComObject, ComObjGet oder ComObjActive in Kombination mit der internen Objektsyntax angesteuert werden.
-COM-Objekte, die IDispatch nicht unterstützen, können mit DllCall verwendet werden, indem die Adresse einer Funktion aus der virtuellen Funktionstabelle des Objekt-Interfaces ermittelt wird. Weitere Informationen finden Sie im Beispiel weiter unten. Allerdings ist es in der Regel besser, ComCall zu verwenden, was diesen Prozess vereinfacht.
+COM-Objekte, auf die VBScript und ähnliche Programmiersprachen zugreifen können, sind in der Regel auch für AutoHotkey über ComObject, ComObjGet oder ComObjActive und die interne Objektsyntax zugänglich.
+COM-Objekte, die IDispatch nicht unterstützen, können mit DllCall verwendet werden, indem die Adresse einer Funktion aus der virtuellen Funktionstabelle des Objekt-Interfaces ermittelt wird. Weitere Informationen finden Sie im Beispiel weiter unten. Allerdings ist es in der Regel besser, ComCall zu verwenden, was diese Prozedur vereinfacht.
.NET Framework-Bibliotheken werden von einer "virtuellen Maschine" ausgeführt, die als Common Language Runtime (CLR) bekannt ist. In diesem Fall sind .NET-DLL-Dateien anders formatiert als normale DLL-Dateien und enthalten in der Regel keine Funktionen, die von DllCall aufgerufen werden können.
@@ -228,7 +228,7 @@Überwacht das aktive Fenster und zeigt die Position des vertikalen Scrollbalkens seines fokussierten Steuerelements an (in Echtzeit).
-SetTimer ScrollleisteÜberwachen, 100 +SetTimer ScrollbalkenÜberwachen, 100 -ScrollleisteÜberwachen() +ScrollbalkenÜberwachen() { FokusHwnd := 0 try FokusHwnd := ControlGetFocus("A") @@ -284,7 +284,7 @@Beispiele
Schreibt etwas Text in eine Datei und liest ihn zurück in den Speicher. Diese Methode ist performanter, wenn es darum geht, mehrere Dateien simultan zu lesen oder zu schreiben. Alternativ kann das gleiche mit FileOpen erreicht werden. Siehe dazu das Beispiel.
+Schreibt etwas Text in eine Datei und liest ihn zurück in den Speicher. Diese Methode ist performanter, wenn es darum geht, mehrere Dateien simultan zu lesen oder zu schreiben. Alternativ kann FileOpen verwendet werden, um denselben Effekt zu erzielen.
DateiName := FileSelect("S16",, "Neue Datei erstellen:") if DateiName = "" @@ -331,7 +331,7 @@Beispiele
static visible := true, c := Map() static sys_cursors := [32512, 32513, 32514, 32515, 32516, 32642 , 32643, 32644, 32645, 32646, 32648, 32649, 32650] - if (cmd = "Reload" or !c.Count) ; Neuladen bei Bedarf oder beim ersten Aufruf. + if (cmd = "Reload" or !c.Count) ; Neu laden bei Bedarf oder beim ersten Aufruf. { for i, id in sys_cursors { @@ -365,7 +365,7 @@Beispiele
Strukturbeispiel. Übergibt die Adresse einer RECT-Struktur an die GetWindowRect-Funktion, die die Struktur mit den Koordinaten der linken oberen und der rechten unteren Ecke des Fensters füllt (relativ zum Bildschirm).
Run "Notepad" -WinWait "Unbenannt - Editor" ; Setzt auch das "zuletzt gefundene Fenster" für das untere WinExist. +WinWait "Unbenannt - Editor" ; Setzt auch das "zuletzt gefundene Fenster" für WinExist unten. Rect := Buffer(16) ; RECT ist eine Struktur bestehend aus vier 32-Bit-Integern (also 4*4=16). DllCall("GetWindowRect", "Ptr", WinExist(), "Ptr", Rect) ; WinExist gibt eine HWND-Nummer zurück. L := NumGet(Rect, 0, "Int"), O := NumGet(Rect, 4, "Int") @@ -418,13 +418,13 @@Beispiele
}Weitere Strukturbeispiele:
-
- Im WinLIRC-Client-Skript wird gezeigt, wie man mit DllCall eine Netzwerkverbindung zu einem TCP/IP-Server aufbauen und Daten von ihm empfangen kann.
+- Das WinLIRC-Client-Skript zeigt, wie mit DllCall eine Netzwerkverbindung zu einem TCP/IP-Server aufgebaut werden kann und Daten von diesem empfangen werden können.
- Das Betriebssystem stellt Standard-Dialogfenster bereit, die der Benutzer zum Auswählen einer Schriftart, einer Farbe oder eines Symbols verwenden kann. Solche Dialogfenster verwenden Strukturen und können via DllCall in Kombination mit comdlg32\ChooseFont, comdlg32\ChooseColor bzw. shell32\PickIconDlg angezeigt werden. Suchen Sie im Forum nach Beispielen.
-Entfernt für 3 Sekunden das aktive Fenster aus der Taskleiste. Vergleichen Sie dies mit dem äquivalenten ComCall-Beispiel.
+Entfernt das aktive Fenster für 3 Sekunden aus der Taskleiste. Äquivalent zum ComCall-Beispiel.
/* Methoden in der ITaskbarList-VTable: IUnknown: @@ -441,7 +441,7 @@Beispiele
IID_ITaskbarList := "{56FDF342-FD6D-11d0-958A-006097C9A090}" CLSID_TaskbarList := "{56FDF344-FD6D-11d0-958A-006097C9A090}" -; Erstellt das TaskbarList-Objekt. +; Das TaskbarList-Objekt erstellen. tbl := ComObject(CLSID_TaskbarList, IID_ITaskbarList) activeHwnd := WinExist("A") @@ -451,7 +451,7 @@Beispiele
Sleep 3000 DllCall(vtable(tbl.ptr,4), "ptr", tbl, "ptr", activeHwnd) ; tbl.AddTab(activeHwnd) -; Nicht-gewrappte Objekte müssen manuell freigegeben werden. +; Nicht-gewrappte Interface-Pointer müssen manuell freigegeben werden. ObjRelease(tbl.ptr) vtable(ptr, n) { diff --git a/target/docs/lib/EditGetCurrentCol.htm b/target/docs/lib/EditGetCurrentCol.htm index 39f8eb56..ff7cd682 100644 --- a/target/docs/lib/EditGetCurrentCol.htm +++ b/target/docs/lib/EditGetCurrentCol.htm @@ -14,7 +14,7 @@EditGetCurrentCol
-Gibt die Spaltennummer in einem Edit-Steuerelement zurück, auf der sich aktuell der Textcursor (Texteinfügemarke) befindet.
+Gibt die Nummer der Spalte in einem Edit-Steuerelement zurück, auf der sich der Textcursor (Einfügemarke) aktuell befindet.
AktuelleSpalte := EditGetCurrentCol(Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)diff --git a/target/docs/lib/EditGetCurrentLine.htm b/target/docs/lib/EditGetCurrentLine.htm index 52c87665..c722f285 100644 --- a/target/docs/lib/EditGetCurrentLine.htm +++ b/target/docs/lib/EditGetCurrentLine.htm @@ -14,7 +14,7 @@EditGetCurrentLine
-Gibt die Zeilennummer in einem Edit-Steuerelement zurück, auf der sich aktuell der Cursor (Einfügemarke) befindet.
+Gibt die Nummer der Zeile in einem Edit-Steuerelement zurück, auf der sich der Textcursor (Einfügemarke) aktuell befindet.
AktuelleZeile := EditGetCurrentLine(Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)diff --git a/target/docs/lib/EditGetLine.htm b/target/docs/lib/EditGetLine.htm index 7a2eb290..e83db1fc 100644 --- a/target/docs/lib/EditGetLine.htm +++ b/target/docs/lib/EditGetLine.htm @@ -14,7 +14,7 @@EditGetLine
-Gibt den Text einer bestimmten Zeile in einem Edit-Steuerelement zurück.
+Gibt den Text auf einer bestimmten Zeile in einem Edit-Steuerelement zurück.
Zeile := EditGetLine(N, Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)diff --git a/target/docs/lib/EditPaste.htm b/target/docs/lib/EditPaste.htm index 0bf28413..7cfdf8ec 100644 --- a/target/docs/lib/EditPaste.htm +++ b/target/docs/lib/EditPaste.htm @@ -14,7 +14,7 @@EditPaste
-Fügt eine bestimmte Zeichenkette an den Textcursor (Texteinfügemarke) eines Edit-Steuerelements ein.
+Fügt eine bestimmte Zeichenkette am Textcursor (Einfügemarke) eines Edit-Steuerelements ein.
EditPaste Zkette, Steuerelement , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText@@ -43,7 +43,7 @@Fehlerbehandlung
Bemerkungen
Der Effekt ähnelt dem Einfügen via Strg+V, aber diese Funktion hat weder Einfluss auf den Inhalt der Zwischenablage noch muss das Steuerelement den Tastaturfokus haben.
-Um die Zuverlässigkeit zu verbessern, wird nach jeder Benutzung dieser Funktion automatisch eine Verzögerung durchgeführt. Diese Verzögerung kann via SetControlDelay oder durch direktes Ändern des A_ControlDelay-Wertes geändert werden. Schauen Sie sich die Bemerkungen zu SetControlDelay an, um mehr zu erfahren.
+Um die Zuverlässigkeit zu erhöhen, erfolgt jedes Mal, nachdem diese Funktion verwendet wurde, automatisch eine Verzögerung. Diese Verzögerung kann mit SetControlDelay oder durch Zuweisung eines Wertes an A_ControlDelay geändert werden. Weitere Informationen finden Sie unter SetControlDelay-Bemerkungen.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Siehe auch
diff --git a/target/docs/lib/EnvGet.htm b/target/docs/lib/EnvGet.htm index 84367ccd..c3ac7c7d 100644 --- a/target/docs/lib/EnvGet.htm +++ b/target/docs/lib/EnvGet.htm @@ -43,7 +43,7 @@Beispiele
-diff --git a/target/docs/lib/FileEncoding.htm b/target/docs/lib/FileEncoding.htm index a9ed591d..583dfc6b 100644 --- a/target/docs/lib/FileEncoding.htm +++ b/target/docs/lib/FileEncoding.htm @@ -41,7 +41,7 @@Ruft den Pfad des "Program Files"-Ordners ab und meldet ihn. Eine alternative Methode finden Sie unter RegRead-Beispiel #2.
+Ruft den Pfad des Ordners "Programme" ab und meldet ihn. Eine alternative Methode finden Sie unter RegRead-Beispiel #2.
ProgramFilesDir := EnvGet(A_Is64bitOS ? "ProgramW6432" : "ProgramFiles") MsgBox "Programme sind in: " ProgramFilesDirBemerkungen
Wenn FileEncoding nicht verwendet wird, ist die Kodierung standardmäßig CP0.
CP0 ist kein universeller Identifikator für eine einzelne Codepage, sondern repräsentiert die Standard-ANSI-Codepage des Systems, abhängig von den Sprach- und Regionseinstellungen des Systems oder von der Systemeinstellung "Sprache für Unicode-inkompatible Programme". Mit
DllCall("GetACP")
kann die tatsächliche Codepagenummer abgerufen werden.Die interne Variable A_FileEncoding enthält die aktuelle Einstellung.
-Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet vorerst die Standardeinstellung der Funktion. Um diese zu ändern, nutzen Sie die Funktion während der Startphase des Skripts.
+Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet zunächst die Standardeinstellung der Funktion. Diese Standardeinstellung kann geändert werden, indem die Funktion während der Startphase des Skripts verwendet wird.
Die Standardkodierung wird nicht verwendet, wenn eine UTF-8- oder UTF-16-Byte-Order-Markierung in der Datei vorhanden ist, es sei denn, die Datei wird nur mit Schreibzugriff geöffnet (d.h. der vorherige Inhalt der Datei wird verworfen).
Siehe auch
diff --git a/target/docs/lib/FileExist.htm b/target/docs/lib/FileExist.htm index 71aa11fe..88b2ec54 100644 --- a/target/docs/lib/FileExist.htm +++ b/target/docs/lib/FileExist.htm @@ -42,7 +42,7 @@Rückgabewert
Wenn die Datei keine Attribute hat (was sehr selten ist), wird "X" zurückgegeben. Wenn keine Dateien oder Ordner gefunden werden konnten, wird eine leere Zeichenkette zurückgegeben.
+Wenn die Datei keine Attribute hat (was sehr selten ist), wird "X" zurückgegeben. Wenn weder eine Datei noch ein Ordner gefunden wurde, wird eine leere Zeichenkette zurückgegeben.
Beachten Sie, dass eine Platzhalterprüfung wie InStr(FileExist("OrdnerMitDateienUndUnterordner\*"), "D")
nur mitteilt, ob die zuerst gefundene Datei ein Ordner ist, nicht ob ein Ordner existiert. Um Letzteres zu prüfen, nutzen Sie DirExist. Zum Beispiel: DirExist("OrdnerMitDateienUndUnterordner\*")
Zeigt ein Mitteilungsfenster an, wenn eine Datei nicht existiert.
+Zeigt ein Mitteilungsfenster an, wenn eine Datei nicht existiert.
if not FileExist("C:\Temp\FlagFile.txt") MsgBox "Die Zieldatei existiert nicht."
Typ: Zeichenkette
-Diese Funktion gibt die Attribute der Datei oder des Ordners zurück. Diese Zeichenkette ist eine Teilmenge von RASHNDOCTL
, wovon jeder Buchstabe die folgende Bedeutung hat:
Diese Funktion gibt die Attribute der Datei oder des Ordners zurück. Diese Zeichenkette ist eine Teilmenge von RASHNDOCTL
, wobei jeder Buchstabe die folgende Bedeutung hat:
Typ: Zeichenkette
-Diese Funktion gibt eine Zeichenkette von Ziffern im YYYYMMDDHH24MISS-Format zurück. Die Zeit ist Ihre eigene Ortszeit, nicht UTC/GMT. Diese Zeichenkette sollte nicht als Zahl behandelt werden (man sollte keine mathematischen Operationen an ihr durchführen oder sie numerisch vergleichen).
+Diese Funktion gibt eine Zeichenkette von Ziffern im YYYYMMDDHH24MISS-Format zurück. Die Zeit ist Ihre eigene Ortszeit, nicht UTC/GMT. Diese Zeichenkette sollte nicht als Zahl behandelt werden, d.h. es sollten keine Berechnungen oder numerischen Vergleiche mit ihr durchgeführt werden.
Bei Misserfolg wird ein OSError ausgelöst.
diff --git a/target/docs/lib/FileSelect.htm b/target/docs/lib/FileSelect.htm index ccbddc23..3b3fa4b4 100644 --- a/target/docs/lib/FileSelect.htm +++ b/target/docs/lib/FileSelect.htm @@ -66,7 +66,7 @@Typ: Zeichenkette oder Array mit Zeichenketten
+Typ: Zeichenkette oder Array von Zeichenketten
Wenn die Mehrfachauswahl nicht aktiv ist, wird diese Funktion den vollständigen Pfad und Namen der einzelnen Datei oder des Ordners zurückgeben, die bzw. den der Benutzer ausgewählt hat, oder eine leere Zeichenkette, wenn der Benutzer das Dialogfenster abbricht.
Wenn die M-Option (Mehrfachauswahl) aktiv ist, wird diese Funktion ein Array mit Elementen zurückgeben, wo jedes Element der vollständige Pfad und Name einer Datei ist. Das Beispiel ganz unten zeigt, wie diese Dateien einzeln extrahiert werden können. Wenn der Benutzer das Dialogfenster abbricht, ist das Array leer (hat null Elemente).
diff --git a/target/docs/lib/GroupActivate.htm b/target/docs/lib/GroupActivate.htm index 63eef200..822f848d 100644 --- a/target/docs/lib/GroupActivate.htm +++ b/target/docs/lib/GroupActivate.htm @@ -36,7 +36,7 @@Typ: Integer
-Diese Funktion gibt die HWND-Nummer (eindeutige ID) des Fensters zurück, das für die Aktivierung auserkoren wurde, oder 0, wenn keine passenden Fenster für die Aktivierung gefunden wurden. Wenn das aktuell aktive Fenster die einzige Übereinstimmung ist, wird eine 0 zurückgegeben.
+Diese Funktion gibt die HWND-Nummer (eindeutige ID) des Fensters zurück, das für die Aktivierung auserkoren wurde, oder 0, wenn keine passenden Fenster für die Aktivierung gefunden wurden. Wenn das aktuell aktive Fenster die einzige Übereinstimmung ist, wird 0 zurückgegeben.
Diese Funktion bewirkt, dass das erste Fenster, das mit einer der Fensterspezifikationen der Gruppe übereinstimmt, aktiviert wird. Verwendet man GroupActivate danach erneut, wird das nächste Fenster in der Reihe aktiviert, und so weiter. Normalerweise weist man GroupActivate einem Hotkey zu, um das Umschalten zwischen den Fenstern durch Drücken dieser Taste zu automatisieren.
diff --git a/target/docs/lib/GuiControl.htm b/target/docs/lib/GuiControl.htm index 41ec881d..2a0ad55d 100644 --- a/target/docs/lib/GuiControl.htm +++ b/target/docs/lib/GuiControl.htm @@ -69,7 +69,7 @@GuiCtrl.Add(Elemente)
Typ: Array mit Zeichenketten
+Typ: Array von Zeichenketten
Ein Array mit Zeichenketten (z.B. ["Rot","Grün","Blau"]
), die an das Ende der Liste des Steuerelements angefügt werden sollen. Verwenden Sie vorher GuiCtrl.Delete, um die Liste stattdessen zu ersetzen bzw. zu überschreiben.
Typ: Array mit Zeichenketten
+Typ: Array von Zeichenketten
Ein Array mit Dateinamen, wo DateiArray[1]
die erste Datei ist und DateiArray.Length
die Anzahl der Dateien zurückgibt. Mit einer For-Schleife kann man die Dateien einzeln durchgehen:
Gui_DropFiles(GuiObj, GuiCtrlObj, DateiArray, X, Y) { for i, AbgelegteDatei in DateiArray @@ -170,7 +170,7 @@Size
Typ: Integer
-Geben Sie einen der folgenden Werte an:
+Einer der folgenden Werte:
Typ: Zeichenkette oder Integer
-Geben Sie einen der folgenden Werte an:
+Einer der folgenden Werte:
On oder 1 (true): Aktiviert den Hotstring.
Off oder 0 (false): Deaktiviert den Hotstring.
Toggle oder -1: Schaltet den Hotstring auf den entgegengesetzten Zustand (aktiviert oder deaktiviert).
diff --git a/target/docs/lib/KeyWait.htm b/target/docs/lib/KeyWait.htm index b1ae09ef..c1abaa57 100644 --- a/target/docs/lib/KeyWait.htm +++ b/target/docs/lib/KeyWait.htm @@ -43,7 +43,7 @@Der physische Status einer Tastatur- oder Maustaste ist in der Regel derselbe wie der logische Status, es sei denn, der Tastatur- und/oder Maus-Hook ist installiert, dann spiegelt dieser genau wider, ob der Benutzer die Taste physisch gedrückt hält oder nicht. Mit der KeyHistory-Funktion oder dem zugehörigen Menüpunkt können Sie prüfen, ob Ihr Skript die Hooks verwendet. Durch Hinzufügen von InstallKeybdHook und/oder InstallMouseHook können die Hooks im Skript erzwungen werden.
-Während die Funktion im Wartezustand ist, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
+Während die Funktion wartet, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
Um auf das Loslassen von zwei oder mehr Tasten zu warten, verwenden Sie KeyWait mehrmals. Zum Beispiel:
KeyWait "Control" ; Warten, bis STRG und ALT losgelassen werden. KeyWait "Alt"diff --git a/target/docs/lib/ListLines.htm b/target/docs/lib/ListLines.htm index e39b02ce..44f0a96d 100644 --- a/target/docs/lib/ListLines.htm +++ b/target/docs/lib/ListLines.htm @@ -36,7 +36,7 @@
ListLines
(ohne Parameter) entspricht der Auswahl des Menüpunkts "View->Lines most recently executed" im Hauptfenster. Dies kann helfen, ein Skript zu debuggen.
ListLines False
und ListLines True
können verwendet werden, um die Protokollierung bestimmter Zeilen auszuschalten, wodurch verhindert wird, dass sich der Verlauf zu schnell füllt (z.B. bei einer Schleife mit vielen schnellen Iterationen). Die Zeile, die ListLines aufgerufen hat, wird ebenfalls aus dem Zeilenverlauf entfernt, um die Übersicht zu wahren. Die Performanz ist eventuell um einige Prozentpunkte reduziert, während die Protokollierung aktiv ist.
Beim Ändern des ListLines-Modus wird die aktuelle Zeile (in der Regel diejenige, die ListLines aufgerufen oder A_ListLines etwas zugewiesen hat) im Zeilenverlauf weggelassen.
-Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet vorerst die Standardeinstellung der Funktion. Um diese zu ändern, nutzen Sie die Funktion während der Startphase des Skripts.
+Jeder neu gestartete Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet zunächst die Standardeinstellung der Funktion. Diese Standardeinstellung kann geändert werden, indem die Funktion während der Startphase des Skripts verwendet wird.
Die interne Variable A_ListLines enthält 1, wenn ListLines eingeschaltet ist, andernfalls 0.
Die internen Variablen A_LineNumber und A_LineFile enthalten die Nummer der aktuell ausgeführten Zeile und den Namen der zugehörigen Datei.
diff --git a/target/docs/lib/ListViewGetContent.htm b/target/docs/lib/ListViewGetContent.htm index 5ddc57f3..0b10a957 100644 --- a/target/docs/lib/ListViewGetContent.htm +++ b/target/docs/lib/ListViewGetContent.htm @@ -14,7 +14,7 @@Gibt eine Liste von Einträgen/Zeilen aus einer ListView zurück.
+Gibt eine Liste von Einträgen/Zeilen in einer ListView zurück.
Liste := ListViewGetContent(Optionen, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)@@ -54,8 +54,8 @@
Es wird ein ValueError ausgelöst, wenn die ColN-Option eine nicht-existierende Spalte spezifiziert.
Einige Anwendungen verhindern absichtlich, dass ihr ListView-Text nicht abgerufen werden kann. In solchen Fällen wird normalerweise keine Ausnahme ausgelöst, allerdings werden alle Felder abgerufen, als wären sie leer.
-Das folgende Beispiel zeigt, wie man SendMessage nutzen kann, um die Spalten einer ListView kleiner/größer zu machen:
+Einige Anwendungen behandeln die Daten ihrer ListView vertraulich, so dass ihr Text nicht abgerufen werden kann. In solchen Fällen wird normalerweise keine Ausnahme ausgelöst, aber alle abgerufenen Felder sind leer.
+Es ist auch möglich, mit SendMessage die Spalten einer ListView kleiner/größer zu machen. Zum Beispiel:
SendMessage(0x101E, 0, 80, "SysListView321", FensterTitel) ; 0x101E ist die Meldung LVM_SETCOLUMNWIDTH.
Im obigen Beispiel steht 0 für die erste Spalte (1 für die zweite, 2 für die dritte und so weiter). 80 ist die neue Breite. Ersetzen Sie 80 mit -1, um die Spaltenbreite automatisch an den Inhalt anzupassen. Ersetzen Sie 80 mit -2, um dasselbe zu tun, aber unter Berücksichtigung der Überschriftsbreite.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
diff --git a/target/docs/lib/Map.htm b/target/docs/lib/Map.htm index d66716fb..e0235c5e 100644 --- a/target/docs/lib/Map.htm +++ b/target/docs/lib/Map.htm @@ -170,7 +170,7 @@Typ: Zeichenkette
-Geben Sie einen der folgenden Werte an:
+Einer der folgenden Werte:
"On"
: Die Suche von Schlüsseln erfolgt Groß-/Kleinschreibung-sensitiv. Standardeinstellung.
"Off"
: Die Großbuchstaben A bis Z und die entsprechenden Kleinbuchstaben werden als identisch betrachtet.
"Locale"
: Die Suche von Schlüsseln erfolgt nicht Groß-/Kleinschreibung-sensitiv, gemäß den Regeln der aktuellen Sprach- und Regionseinstellungen des Benutzers. Zum Beispiel behandeln die meisten englischen und westeuropäischen Sprach- und Regionseinstellungen die Großbuchstaben A bis Z, einschließlich ASCII-fremde Großbuchstaben wie Ä und Ü, und die entsprechenden Kleinbuchstaben als identisch. Locale ist 1- bis 8-mal langsamer als Off, abhängig von den zu vergleichenden Zeichenketten.
Typ: Zeichenkette
Wenn leer oder weggelassen, wird standardmäßig Left verwendet (die linke Maustaste). Andernfalls geben Sie die zu klickende Taste oder die Dreh-/Kipprichtung des Mausrads an.
Taste: Left, Right, Middle (oder jeweils nur der erste Buchstabe) oder X1 (vierte Maustaste) oder X2 (fünfte Maustaste). Zum Beispiel: MouseClick "X1"
.
Left ist die primäre Maustaste und Right die sekundäre Maustaste. Wenn der Benutzer die Maustasten via Systemsteuerung vertauscht, werden die physischen Positionen der Maustasten vertauscht, aber der Effekt bleibt der gleiche.
-Mausrad: Geben Sie WheelUp oder WU an, um das Mausrad nach oben zu drehen (von Ihnen weg); geben Sie WheelDown oder WD an, um es nach unten zu drehen (zu Ihnen hin). Geben Sie WheelLeft (WL) oder WheelRight (WR) an, um das Mausrad nach links bzw. rechts zu drücken. KlicksAnzahl ist die Anzahl der Schritte, um die das Mausrad gedreht werden soll.
+Left ist die primäre Maustaste und Right die sekundäre Maustaste. Wenn der Benutzer die Maustasten über die Systemsteuerung vertauscht, werden die physischen Positionen der Maustasten vertauscht, aber der Effekt bleibt derselbe.
+Mausrad: Geben Sie WheelUp oder WU an, um das Mausrad nach oben zu drehen (von Ihnen weg); geben Sie WheelDown oder WD an, um es nach unten zu drehen (zu Ihnen hin). Geben Sie WheelLeft (oder WL) oder WheelRight (oder WR) an, um das Mausrad nach links bzw. rechts zu kippen. KlicksAnzahl ist die Anzahl der Schritte, um die das Mausrad gedreht werden soll.
Typ: Zeichenkette
Wenn leer oder weggelassen, wird standardmäßig Left verwendet (die linke Maustaste). Andernfalls geben Sie Left, Right, Middle (oder jeweils nur den ersten Buchstaben) oder X1 (vierte Maustaste) oder X2 (fünfte Maustaste) an. Zum Beispiel: MouseClickDrag "X1", 0, 0, 10, 10
.
Left ist die primäre Maustaste und Right die sekundäre Maustaste. Wenn der Benutzer die Maustasten via Systemsteuerung vertauscht, werden die physischen Positionen der Maustasten vertauscht, aber der Effekt bleibt der gleiche.
+Left ist die primäre Maustaste und Right die sekundäre Maustaste. Wenn der Benutzer die Maustasten über die Systemsteuerung vertauscht, werden die physischen Positionen der Maustasten vertauscht, aber der Effekt bleibt derselbe.
Wenn der angegebene Prozess gefunden wurde, gibt die Funktion die Prozess-ID (PID) des Prozesses zurück. Hat die Funktion das Zeitlimit überschritten, wird 0 zurückgegeben.
Prozesse werden alle 100 Millisekunden überprüft; sobald die Bedingung erfüllt ist, hört die Funktion auf zu warten. Das heißt, dass die Funktion nicht auf das Zeitlimit wartet, sondern dass sie sofort ihren Wert zurückgibt und die Skriptausführung fortsetzt. Während die Funktion im Wartezustand ist, können neue Threads via Hotkey, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
+Prozesse werden alle 100 Millisekunden überprüft; sobald die Bedingung erfüllt ist, hört die Funktion auf zu warten. Das heißt, dass die Funktion nicht auf das Zeitlimit wartet, sondern dass sie sofort ihren Wert zurückgibt und die Skriptausführung fortsetzt. Während die Funktion wartet, können neue Threads via Hotkey, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
ProcessWaitClose, Run, WinWait, Process-Funktionen, Win-Funktionen
diff --git a/target/docs/lib/ProcessWaitClose.htm b/target/docs/lib/ProcessWaitClose.htm index a37970f0..5ec2df1d 100644 --- a/target/docs/lib/ProcessWaitClose.htm +++ b/target/docs/lib/ProcessWaitClose.htm @@ -39,7 +39,7 @@Wenn alle gefundenen Prozesse geschlossen sind, wird 0 zurückgegeben. Hat die Funktion das Zeitlimit überschritten, wird die Prozess-ID (PID) des ersten gefundenen Prozesses zurückgegeben, der noch existiert.
Prozesse werden alle 100 Millisekunden überprüft; sobald die Bedingung erfüllt ist, hört die Funktion auf zu warten. Das heißt, dass die Funktion nicht auf das Zeitlimit wartet, sondern dass sie sofort ihren Wert zurückgibt und die Skriptausführung fortsetzt. Während die Funktion im Wartezustand ist, können neue Threads via Hotkey, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
+Prozesse werden alle 100 Millisekunden überprüft; sobald die Bedingung erfüllt ist, hört die Funktion auf zu warten. Das heißt, dass die Funktion nicht auf das Zeitlimit wartet, sondern dass sie sofort ihren Wert zurückgibt und die Skriptausführung fortsetzt. Während die Funktion wartet, können neue Threads via Hotkey, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
ProcessWait, Run, WinWaitClose, Process-Funktionen, Win-Funktionen
diff --git a/target/docs/lib/RegRead.htm b/target/docs/lib/RegRead.htm index 945eef2e..294e04f0 100644 --- a/target/docs/lib/RegRead.htm +++ b/target/docs/lib/RegRead.htm @@ -70,7 +70,7 @@Ruft den Pfad des "Program Files"-Ordners ab und meldet ihn. Eine alternative Methode finden Sie unter EnvGet-Beispiel #2.
+Ruft den Pfad des Ordners "Programme" ab und meldet ihn. Eine alternative Methode finden Sie unter EnvGet-Beispiel #2.
; Die folgende Zeile stellt sicher, dass der Pfad des 64-Bit-Programmordners ; zurückgegeben wird, wenn das System 64-Bit ist und das Skript nicht. SetRegView 64 diff --git a/target/docs/lib/Run.htm b/target/docs/lib/Run.htm index 2d9433fd..5348a6e1 100644 --- a/target/docs/lib/Run.htm +++ b/target/docs/lib/Run.htm @@ -78,7 +78,7 @@Bemerkungen
Die Performanz kann etwas verbessert werden, wenn Ziel ein genauer Pfad ist, wie z.B.
Run 'C:\Windows\Notepad.exe "C:\Meine Dokumente\Test.txt"'
anstelle vonRun "C:\Meine Dokumente\Test.txt"
.Es können spezielle CLSIDs via Run geöffnet werden. Die meisten von ihnen können mit dem Präfix shell: geöffnet werden. Einige können auch ohne dieses Präfix geöffnet werden. Zum Beispiel:
Run "shell:::{D20EA4E1-3957-11D2-A40B-0C5020524153}" ; Windows-Tools. -Run "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" ; Arbeitsplatz/Computer. +Run "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" ; Dieser PC (ehemals Arbeitsplatz oder Computer). Run "::{645FF040-5081-101B-9F08-00AA002F954E}" ; Papierkorb.Systemverben beziehen sich auf Aktionen, die im Rechtsklickmenü einer Datei innerhalb des Explorers verfügbar sind. Wenn eine Datei ohne Verb gestartet wird, wird das Standardverb (üblicherweise "open") für diesen bestimmten Dateityp verwendet. Andernfalls geben Sie das Verb vor dem Namen der Zieldatei an. Zurzeit werden folgende Verben unterstützt:
63 | -SM_NETWORK: Wenn ein Netzwerk vorhanden ist, wird das niederwertigste Bit gesetzt, andernfalls wird es gelöscht. Die anderen Bits sind für die zukünftige Verwendung reserviert. | +SM_NETWORK: Wenn ein Netzwerk vorhanden ist, wird das niederwertigste Bit gesetzt, andernfalls wird es gelöscht. Die anderen Bits sind für zukünftige Zwecke reserviert. | ||||||||||||||||||
8193 | @@ -95,7 +95,7 @@||||||||||||||||||||
4096 | -SM_REMOTESESSION: Diese Systemmetrik wird in einer Terminal Services-Umgebung verwendet. Wenn der aufrufende Prozess einer Terminal Services-Clientsitzung zugeordnet ist, ist der Rückgabewert ungleich 0. Wenn der aufrufende Prozess einer Terminal Server-Konsolensitzung zugeordnet ist, ist der Rückgabewert 0. Die Konsolensitzung ist nicht unbedingt die physische Konsole. | +SM_REMOTESESSION: Diese Systemmetrik wird in einer Terminal Services-Umgebung verwendet. Wenn der aufrufende Prozess einer Terminal Services-Clientsitzung zugeordnet ist, wird ein Wert ungleich 0 zurückgegeben. Wenn der aufrufende Prozess einer Terminal Server-Konsolensitzung zugeordnet ist, wird 0 zurückgegeben. Die Konsolensitzung ist nicht unbedingt die physische Konsole. | ||||||||||||||||||
70 | diff --git a/target/docs/lib/SysGetIPAddresses.htm b/target/docs/lib/SysGetIPAddresses.htm index bd5c52f2..babe802d 100644 --- a/target/docs/lib/SysGetIPAddresses.htm +++ b/target/docs/lib/SysGetIPAddresses.htm @@ -22,7 +22,7 @@
Operation | Präfix | -Beispiel-Zeichenkette | +Beispiel | Formel |
---|---|---|---|---|
Add | + | -+0x80 | +"+0x80" |
NeuerStyle := AktuellerStyle | Wert |
Remove | - | --0x80 | +"-0x80" |
NeuerStyle := AktuellerStyle & ~Wert |
Umschalten | ^ | -^0x80 | +"^0x80" |
NeuerStyle := AktuellerStyle ^ Wert |
Die Funktion hört bereits auf zu warten, wenn ein passendes Fenster gefunden wird, und nicht erst, wenn Zeitlimit abgelaufen ist. In diesem Fall wird das zuletzt gefundene Fenster aktualisiert und die Skriptausführung fortgesetzt.
Wenn FensterTitel eine ungültige HWND-Nummer enthält (entweder als Integer oder über die Hwnd-Eigenschaft eines Objekts), kehrt die Funktion sofort zurück, unabhängig vom Zeitlimit. Es wäre nicht sinnvoll, darauf zu warten, dass ein anderes Fenster mit derselben HWND-Nummer erstellt wird, da sehr wahrscheinlich beide Fenster nichts miteinander zu tun haben.
-Während die Funktion im Wartezustand ist, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
+Während die Funktion wartet, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
Wenn ein anderer Thread die Inhalte von Variablen, die die Funktion als Parameter verwendet, zwischendurch ändert, wird die Funktion diese Änderung ignorieren, d.h. die Funktion verwendet weiterhin den Titel und Text, die ursprünglich in den Variablen vorhanden waren, als die Funktion zum ersten Mal zu warten begann.
Im Gegensatz zu WinWaitActive kann hier nicht das Zuletzt Gefundene Fenster verwendet werden. Daher muss mindestens einer der Fensterparameter (FensterTitel, FensterText, AusnahmeTitel, AusnahmeText) einen nicht-leeren Wert enthalten.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist, sogar wenn FensterTitel eine HWND-Nummer oder ein Objekt ist.
diff --git a/target/docs/lib/WinWaitActive.htm b/target/docs/lib/WinWaitActive.htm index 8c33b5c1..917c0918 100644 --- a/target/docs/lib/WinWaitActive.htm +++ b/target/docs/lib/WinWaitActive.htm @@ -44,7 +44,7 @@Da "A"
mit dem jeweils aktiven Fenster übereinstimmt, wartet WinWaitNotActive "A"
normalerweise unendlich lang. Um stattdessen zu warten, bis ein anderes Fenster aktiv wird, geben Sie wie folgt dessen eindeutige ID an:
WinWaitNotActive WinExist("A")
Sowohl WinWaitActive als auch WinWaitNotActive werden das zuletzt gefundene Fenster aktualisieren, wenn zu Beginn der Funktion ein passendes Fenster aktiv ist oder wenn eines aktiv wird, während die Funktion wartet.
-Während die Funktion im Wartezustand ist, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
+Während die Funktion wartet, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
Wenn ein anderer Thread die Inhalte von Variablen, die die Funktion als Parameter verwendet, zwischendurch ändert, wird die Funktion diese Änderung ignorieren, d.h. die Funktion verwendet weiterhin den Titel und Text, die ursprünglich in den Variablen vorhanden waren, als die Funktion zum ersten Mal zu warten begann.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Während die Funktion im Wartezustand ist, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
+Während die Funktion wartet, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
Wenn ein anderer Thread die Inhalte von Variablen, die die Funktion als Parameter verwendet, zwischendurch ändert, wird die Funktion diese Änderung ignorieren, d.h. die Funktion verwendet weiterhin den Titel und Text, die ursprünglich in den Variablen vorhanden waren, als die Funktion zum ersten Mal zu warten begann.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist, sogar wenn FensterTitel eine HWND-Nummer oder ein Objekt ist.
diff --git a/target/docs/lib/index.htm b/target/docs/lib/index.htm index 1392f2af..1a73e47c 100644 --- a/target/docs/lib/index.htm +++ b/target/docs/lib/index.htm @@ -93,7 +93,7 @@Bestimmte Spezialordner im Betriebssystem werden durch eindeutige Zeichenketten identifiziert. Einige von diesen Zeichenketten können in Verbindung mit DirSelect verwendet werden. Zum Beispiel:
-DirSelect("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}") ; Wählt einen Ordner im Arbeitsplatz/Computer aus.+
DirSelect("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}") ; Einen Ordner in Dieser PC (ehemals Arbeitsplatz oder Computer) auswählen.
Um eine CLSID mit Run zu öffnen, geben Sie einfach die CLSID als ersten Parameter an. Die meisten CLSIDs in der unteren Tabelle können mit Run "shell:CLSID"
geöffnet werden. Einige können auch ohne das Präfix shell: geöffnet werden. Zum Beispiel:
Run "shell:::{D20EA4E1-3957-11D2-A40B-0C5020524153}" ; Windows-Tools. Run "::{21EC2020-3AEA-1069-A2DD-08002B30309D}" ; Alle Systemsteuerungselemente. -Run "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" ; Arbeitsplatz/Computer. +Run "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" ; Dieser PC (ehemals Arbeitsplatz oder Computer). Run "::{645FF040-5081-101B-9F08-00AA002F954E}" ; Papierkorb. -Run "::{450D8FBA-AD25-11D0-98A8-0800361B1103}\Mein Ordner" ; Öffnet einen Ordner in "Eigene Dokumente". +Run "::{450D8FBA-AD25-11D0-98A8-0800361B1103}\Mein Ordner" ; Öffnet einen Ordner in "Dokumente". Run A_MyDocuments "\Mein Ordner" ; Wie oben, funktioniert aber in den meisten Systemen.
Die Verfügbarkeit und Funktionalität von CLSIDs variiert je nach aktuellem Betriebssystem, installierten Anwendungen und dem verwendeten Befehl. Die Spalte "Verfügbarkeit" gibt den Bereich der OS-Versionen an, für die die CLSID verwendet werden kann (XP, Vista, 7, 8, 10, 11). Weitere CLSIDs sind in der Registry unter HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
zu finden.
Standardmäßig ist die Tabelle nach CLSID in aufsteigender Reihenfolge sortiert. Um die Tabelle nach einer anderen Spalte oder in einer anderen Reihenfolge zu sortieren, klicken Sie auf eine Spaltenüberschrift.
CLSID | +CLSID | Standort | Verfügbarkeit |
---|---|---|---|
::{20D04FE0-3AEA-1069-A2D8-08002B30309D} | -Arbeitsplatz/Computer Dieser PC |
+ Arbeitsplatz Computer Dieser PC |
XP-11 |
X | -PCRE_EXTRA. Aktiviert PCRE-Features, die mit Perl inkompatibel sind. Aktuell gibt es nur ein einziges Feature dieser Art - es bewirkt, dass jeder umgekehrter Schrägstrich, gefolgt von einem Buchstaben ohne spezielle Funktion, dazu führt, dass eine Ausnahme ausgelöst wird. Diese Option hilft, ungenutzte PCRE-Escapesequenzen für die zukünftige Verwendung zu reservieren. Ohne diese Option wird der umgekehrte Schrägstrich vor einem Buchstaben ohne spezielle Funktion einfach ignoriert (z.B. werden sowohl \g als auch g als normales g erkannt). Unabhängiger von dieser Option werden umgekehrte Schrägstriche vor nicht-alphabetischen Zeichen ohne spezielle Funktion immer ignoriert (z.B. werden sowohl \/ als auch / als normaler Schrägstrich erkannt). | +PCRE_EXTRA. Aktiviert PCRE-Features, die mit Perl inkompatibel sind. Aktuell gibt es nur ein einziges Feature dieser Art - es bewirkt, dass jeder umgekehrter Schrägstrich, gefolgt von einem Buchstaben ohne spezielle Funktion, dazu führt, dass eine Ausnahme ausgelöst wird. Diese Option hilft, ungenutzte PCRE-Escapesequenzen für zukünftige Zwecke zu reservieren. Ohne diese Option wird der umgekehrte Schrägstrich vor einem Buchstaben ohne spezielle Funktion einfach ignoriert (z.B. werden sowohl \g als auch g als normales g erkannt). Unabhängiger von dieser Option werden umgekehrte Schrägstriche vor nicht-alphabetischen Zeichen ohne spezielle Funktion immer ignoriert (z.B. werden sowohl \/ als auch / als normaler Schrägstrich erkannt). | |
S | diff --git a/target/docs/static/source/data_index.js b/target/docs/static/source/data_index.js index 619e1228..15176d91 100644 --- a/target/docs/static/source/data_index.js +++ b/target/docs/static/source/data_index.js @@ -345,7 +345,7 @@ indexData = [ ["close a window","lib/WinClose.htm"],["Schließen eines Fensters","lib/WinClose.htm"], ["Close-Methode (File)","lib/File.htm#Close",7], ["Closure","Functions.htm#closures",6], - ["CLSID-Liste (Arbeitsplatz, etc.)","misc/CLSID-List.htm"], + ["CLSID-Liste (Papierkorb usw.)","misc/CLSID-List.htm"], ["Koaleszenz-Operator","Variables.htm#or-maybe"], ["color names, RGB/HTML","misc/Colors.htm"],["Farbnamen, RGB/HTML","misc/Colors.htm"], ["color of pixels","lib/PixelSearch.htm"],["Farben von Pixeln","lib/PixelSearch.htm"], diff --git a/target/docs/v2-changes.htm b/target/docs/v2-changes.htm index b9d14648..5c40defe 100644 --- a/target/docs/v2-changes.htm +++ b/target/docs/v2-changes.htm @@ -140,7 +140,7 @@