ImageSearch


Sucht einen Bildschirmbereich nach einem Bild ab.

ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile

Parameter

OutputVarX/Y Die Namen der Variablen, in denen die X- und Y-Koordinaten des obersten linken Pixels vom gefundenen Bild gespeichert werden (wenn nichts gefunden wurde, werden die Variablen leer zurückgegeben). Die Koordinaten beziehen sich auf das aktuelle Fenster, sofern dies nicht mit CoordMode geändert wurde.

Einer oder beide Parameter dürfen weggelassen werden; in diesem Fall läßt sich mit ErrorLevel (siehe unten) ermitteln, ob eine Übereinstimmung gefunden wurde.

X1,Y1 Die X- und Y-Koordinaten der oberen linken Ecke des abzusuchenden Rechtecks; Ausdrücke sind hier erlaubt. Die Koordinaten beziehen sich auf das aktuelle Fenster, sofern dies nicht mit CoordMode geändert wurde.
X2,Y2 Die X- und Y-Koordinaten der unteren rechten Ecke des abzusuchenden Rechtecks; Ausdrücke sind hier erlaubt. Die Koordinaten beziehen sich auf das aktuelle Fenster, sofern dies nicht mit CoordMode geändert wurde.
ImageFile

Der Name der Bilddatei.
Falls kein absoluter Pfad angegeben wurde, wird dafür der Pfad in %A_WorkingDir% verwendet. Alle Betriebssysteme unterstützen GIF, JPG, BMP, ICO, CUR und ANI Bilder (BMP-Bilder müssen mindestens 16 bit haben). Unter anderem können auch die Dateitypen EXE, DLL, CPL und SCR Icons enthalten. Ab Windows XP werden zusätzliche Bildformate unterstützt, wie z. B. PNG, TIF, Exif, WMF und EMF. Ältere Betriebssysteme können durch das Kopieren von Microsoft's freier GDI+ DLL in den AutoHotkey.exe-Ordner unterstützt werden (bei einem compilierten Script muß die DLL in den Script-Ordner kopiert werden). Zum Download der DLL suchen Sie auf www.microsoft.com nach den folgenden Schlagwörtern: gdi redistributable

Optionen: Vor dem Dateinamen dürfen 0 oder mehrere der folgenden Strings stehen. Trennen Sie die Optionen mit einem einzelnen Leerzeichen oder Tabulator voneinander. Beispiel: *2 *w100 *h-1 C:\HauptLogo.bmp

*IconN: Wollen Sie nicht die erste Icon-Gruppe in der Datei verwenden, geben Sie *Icon# ein, wobei # für die Nummer der Icon-Gruppe steht. *Icon2 würde z. B. das voreingestellte Icon der zweiten Gruppe laden.

*n (Farbtoleranz): Geben Sie für n eine Zahl von 0 bis 255 ein. Dies ist die maximal erlaubte Farbtoleranz für die Intensität der roten, grünen und blauen Komponenten der Farbe eines jeden Pixels. *2 würde z. B. eine Abweichung von 2 Stufen tolerieren. Dieser Parameter ist nützlich, wenn der Farbton des Bildes leicht variiert oder wenn ImageFile ein Format wie z. B. GIF oder JPG hat, das das Bild nicht 100%ig auf dem Bildschirm wiedergibt. Wenn Sie 255 Abstufungen angeben, werden alle Farben akzeptiert. Voreingestellt ist eine Toleranz von 0.

*TransN: Mit dieser Option kann man bei Bildern mit transparenter Frabe leichter eine Übereinstimmung finden, indem man die transarente Farbe des Bildes angibt (die quasi mit jeder Farbe auf dem Bildschirm übereinstimmt). Im Allgemeinen verwendet man diese Option, um PNG-, GIF- und TIF-Dateien mit transparenten Bereichen zu finden (Icons brauchen diese Option allerdings nicht, weil bei ihnen die Transparenz automatisch unterstützt wird). Bei GIF Dateien arbeitet wohl *TransWhite am besten, und für PNG- und TIF-Dateien *TransBlack. Andernfalls geben Sie für N eine andere Farbe an - ihren englischen Namen oder RGB-Wert (siehe die Farbtafel als Orientierungshilfe, oder verwenden Sie PixelGetColor im RGB-Modus). Beispiele *TransBlack, *TransFFFFAA, *Trans0xFFFFAA

*wn und *hn: Breite und Höhe, auf die das Bild vergrößert/verkleinert werden soll (diese Breite und Höhe bestimmen auch, welches Icon von einer Multi-Icon-.ICO-Datei geladen werden soll). Wenn diese beiden Options fehlen, werden die von ICO-, DLL- oder EXE-Dateien geladenen Icons auf die vom Betriebssystem voreingestellte kleine Icon-Größe gebracht, üblicherweise 16 mal 16 (Durch *w0 *h0 können Sie erzwingen, daß die aktuelle/internen Abmessungen benutzt werden). Bilder, die keine Icons sind, werden mit ihrer aktuellen Größe gelden. Um beim Verkleinern oder Vergrößern des Bildes das Seitenverhältnis zu erhalten, geben Sie -1 für eine der Dimensionen und eine positive Zahl für die andere an. Mit *w200 *h-1 wird z. B. das Bild 200 Pixel breit und seine Höhe automatisch gesetzt.

ErrorLevel

ErrorLevel wird auf 0 gesetzt, wenn das Bild im angegebenen Bereich gefunden wurde, auf 1 wenn es nicht gefunden wurde, und auf 2, falls durch ein Problem der Befehl nicht ausgeführt werden konnte (wie z. B. ein Fehler beim Öffnen der Bild-Datei oder eine falsch formatierte Option).

Bemerkungen

Mit ImageSearch lassen sich grafische Objekte erkennen, die entweder keinen Text haben, oder deren Text sich nicht einfach erkennen erkennen läßt. Es kann z. B. benutzt werden, um die Position von Bild-Buttons, Icons, Web-Links oder Objekten in Spielen zu entdecken. Einmal lokalisiert, lassen sich solche Objekte per Click anklicken.

Eine manchmal nützliche Strategie ist, nur einen kleinen Ausschnitt statt das kompletten Bild abzusuchen. Die kann die Zuverlässigkeit erhöhen, wenn das Bild als Ganzes variiert, bestimmte Teile des Bildes jedoch immer gleich bleiben. Ein Ausschnitt läßt sich z. B. folgendermaßen extrahieren:

  1. Drücken Sie Alt+PrintScreen, wenn das Bild im aktiven Fenster zu sehen ist. Dies kopiert ein Bildschirmabbild (Screenshot) in die Zwischenablage.
  2. Öffnen Sie ein Bildbearbeitungsprogramm wie z. B. Paint.
  3. Fügen Sie den Inhalt der Zwischenablage (also den Screenshot) ein.
  4. Wählen Sie eine Bereich, der sich nicht ändert und für das Bild charakteristisch ist.
  5. Kopieren Sie den Bereich und fügen Sie ihn in eine neues Bilddokument ein.
  6. Speichern Sie dieses als kleine Datei ab, die dann von ImageSearch verwendet werden kann.

Um übereinstimmen zu können, muß ein Bild auf dem Bildschirm dieselbe Größe wie das per ImageFile-Parameter und seinen Optionen eingeladene Bild.

Der zu durchsuchende Bereich muß sichtbar sein; umgekehrt heißt das: ein Bereich in einem Fenster, das hinter einem anderen Fenster versteckt ist, kann nicht durchsucht werden. Im Gegensatz dazu werden Bilder, die zum Teil unter dem Mauszeiger liegen, üblicherweise erkannt. Davon ausgenommen sind Mauszeiger in Spielen, die meist die drunterliegenden Bilder zerstören.

Der Bereich wird von oben nach unten abgesucht; falls mehr als eine Übereinstimmung vorhanden sein sollte, wird die gefunden, die dem oberen Rand am nächsten ist.

Icons, die transparente Farben enthalten, erlauben automatisch eine Übereinstimmung mit jeder Farbe auf dem Bildschirm. Daher ist die Farbe hinter dem Icon egal.

ImageSearch unterstützt 8-bit Farbauflösungen (256 Farben) und höher.

Das Suchverhalten kann je nach von der Farbtiefe der Grafikkarte (speziell bei GIF- und JPG-Dateien) unterschiedlich sein. Wenn ein Script bei unterschiedlichen Farbtiefen laufen soll, ist es das Beste, es bei jeder Einstellung zu testen. Die Option Farbtoleranz (*n) kann für ein einheitliches Verhalten über mehrere Farbtiefen sorgen.

Wenn das Bild auf dem Bildschirm halb-transparent ist, kann ImageSearch es wahrscheinlich nicht finden. Um dies zu umgehen, versuchen Sie die Option Farbtoleranz (*n) oder machen Sie das Fenster kurzzeitig undurchsichtig mit "WinSet, Transparent, Off".

Siehe auch

PixelSearch, PixelGetColor, CoordMode, MouseGetPos

Beispiele

ImageSearch, FoundX, FoundY, 40,40, 300, 300, C:\Meine Bilder\test.bmp

CoordMode Pixel  ; Bezieht die folgenden Koordinaten auf den Bildschirm statt auf das aktive Fenster.
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *Icon3 %A_ProgramFiles%\Anwendung\Anwendung.exe
if ErrorLevel = 2
    MsgBox Konnte die Suche nicht durchführen.
else if ErrorLevel = 1
    MsgBox Das Icon konnte auf dem Bildschirm nicht gefunden werden.
else
    MsgBox Das Icon wurde auf Position %FoundX%x%FoundY% gefunden.