PixelSearch

Sucht in einem bestimmten Bildschirmbereich nach einem Pixel, das eine bestimmte Farbe hat.

PixelSearch, AusgabeVarX, AusgabeVarY, X1, Y1, X2, Y2, FarbeID , Variation, Modus

Parameter

AusgabeVarX, AusgabeVarY

Namen der Ausgabevariablen, in denen die X- und Y-Koordinate des ersten Pixels, das die Farbe FarbeID hat, gespeichert werden sollen (wenn das Pixel nicht gefunden wird, werden diese Variablen leer gemacht). Standardmäßig sind Koordinaten relativ zum aktiven Fenster, was aber mit CoordMode geändert werden kann.

Einer oder beide dieser Parameter können leer gelassen werden - in diesem Fall kann mit ErrorLevel (siehe unten) festgestellt werden, ob eine Übereinstimmung gefunden wurde.

X1, Y1

Die X- und Y-Koordinate einer Ecke des rechteckigen Suchbereichs, die den Startpunkt der Suche kennzeichnet (können Ausdrücke sein). Standardmäßig sind Koordinaten relativ zum aktiven Fenster, was aber mit CoordMode geändert werden kann.

X2, Y2

Die X- und Y-Koordinate einer Ecke des rechteckigen Suchbereichs, die den Endpunkt der Suche kennzeichnet (können Ausdrücke sein). Standardmäßig sind Koordinaten relativ zum aktiven Fenster, was aber mit CoordMode geändert werden kann.

FarbeID

Die dezimale oder hexadezimale ID der Farbe, die gesucht werden soll, standardmäßig im Blau-Grün-Rot-Format (BGR). Kann ein Ausdruck sein. Farb-IDs können mit dem Tool "Window Spy" (erreichbar über das Tray-Menü) oder via PixelGetColor ermittelt werden. Zum Beispiel: 0x9d6346.

Variation

Wenn leer oder weggelassen, wird standardmäßig 0 verwendet. Andernfalls geben Sie eine Zahl im Bereich von 0 bis 255 an, um die erlaubte Anzahl von Variationsnuancen in beide Richtungen für die Intensität der Rot-, Grün- und Blauanteile der Farbe zu bestimmen (kann ein Ausdruck sein). Wenn z.B. 2 angegeben ist und FarbeID 0x444444 ist, wird jede Farbe von 0x424242 bis 0x464646 als Übereinstimmung angesehen. Dieser Parameter hilft bei variierenden Pixelfarben. Wenn Sie 255 Variationsnuancen angeben, werden alle Farben übereinstimmen.

Modus

Wenn leer oder weggelassen, wird FarbeID als BGR-Wert interpretiert und der langsame Suchmodus verwendet. Andernfalls geben Sie eines oder mehrere der folgenden Wörter an. Mehrere Wörter müssen mit Leerzeichen voneinander getrennt werden (z.B. Fast RGB).

Fast: Eine schnellere Suchmethode, die die CPU-Belastung durch PixelSearch in den meisten Fällen drastisch reduziert. Obwohl Farbtiefen bis runter zu 8-Bit (256 Farben) unterstützt werden, ist der schnelle Modus bei 24-Bit- oder 32-Bit-Farben deutlich performanter. Wenn die Farbtiefe des Bildschirms 16-Bit oder niedriger ist, kann sich der Variation-Parameter im schnellen Modus etwas anders verhalten als im langsamen Modus. Außerdem durchsucht der schnelle Modus den Bereich zeilenweise, nicht spaltenweise. Daher kann es sein, dass bei mehreren Übereinstimmungen ein anderes Pixel gefunden wird als im langsamen Modus.

Warnung: Der standardmäßig verwendete langsame Modus ist auf den meisten modernen Systemen wegen Inkompatibilität mit der Desktopgestaltung unbrauchbar und daher um ein Vielfaches langsamer.

RGB: FarbeID wird als RGB- statt BGR-Wert interpretiert. Mit anderen Worten, die Rot- und Blauanteile sind vertauscht.

Fehlerbehandlung

[v1.1.04+]: Dieser Befehl ist in der Lage, eine Ausnahme auszulösen, wenn während der Suche ein Problem auftritt. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird auf 0 gesetzt, wenn die Farbe im angegebenen Bereich gefunden wurde, auf 1, wenn sie nicht gefunden wurde, oder auf 2, wenn der Befehl die Suche aufgrund eines Problems nicht durchführen konnte.

Bemerkungen

Der Suchbereich muss sichtbar sein, d.h. es ist nicht möglich, einen Bereich in einem Fenster zu durchsuchen, das hinter einem anderen Fenster verborgen ist. Dagegen werden Pixel unter dem Mauszeiger in der Regel erkannt. Eine Ausnahme bilden die Mauszeiger von Videospielen, die in den meisten Fällen alle darunter liegenden Pixel verdecken.

Die Suchrichtung hängt von der Anordnung der Parameter ab. Mit anderen Worten: Wenn X1 größer als X2 ist, wird die Suche von rechts nach links durchgeführt, beginnend bei Spalte X1. Entsprechend wird, wenn Y1 größer als Y2 ist, die Suche von unten nach oben durchgeführt. Vor [v1.1.32] setzt der schnelle Modus voraus, dass X1 und Y1 die linke obere Ecke sein muss.

Schneller Modus: PixelSearch startet bei den Koordinaten X1 und Y1 und sucht in der Zeile von X1 bis X2 nach einer Übereinstimmung. Wenn es keine Übereinstimmung findet, sucht es zeilenweise in Richtung Y2 weiter, bis es das Pixel gefunden hat.

Langsamer Modus: PixelSearch startet bei den Koordinaten X1 und Y1 und sucht in der Spalte von Y1 bis Y2 nach einer Übereinstimmung. Wenn es keine Übereinstimmung findet, sucht es spaltenweise in Richtung X2 weiter, bis es das Pixel gefunden hat.

Wenn der Suchbereich groß ist und die Suche mit hoher Frequenz wiederholt wird, kann es zu einer hohen CPU-Belastung kommen. Um dem entgegenzuwirken, sollte die Größe des Suchbereichs auf ein Minimum beschränkt werden.

PixelGetColor, ImageSearch, CoordMode, MouseGetPos

Beispiele

Sucht in einem bestimmten Bereich des aktiven Fensters nach einem Pixel und setzt Px und Py auf die X- und Y-Koordinate des ersten Pixels, das mit der angegebenen Farbe innerhalb von 3 Variationsnuancen übereinstimmt.

PixelSearch, Px, Py, 200, 200, 300, 300, 0x9d6346, 3, Fast
if ErrorLevel
    MsgBox, Die Farbe konnte im angegebenen Bereich nicht gefunden werden.
else
    MsgBox, Eine Farbe innerhalb von 3 Variationsnuancen wurde auf X%Px% Y%Py% gefunden.