ImageSearch

Durchsucht einen Bereich des Bildschirms nach einem Bild.

ImageSearch, AusgabeX, AusgabeY, X1, Y1, X2, Y2, Bilddatei

Parameter

AusgabeX/Y

Namen der Variablen, in denen die Koordinaten X und Y des oberen linken Pixels, wo das Bild auf dem Bildschirm gefunden wurde, gespeichert werden sollen (wenn das Bild nicht gefunden wird, werden diese Variablen leer gemacht). Koordinaten sind relativ zum aktiven Fenster, sofern das nicht mit CoordMode geändert wurde.

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/Y-Koordinaten der oberen linken Ecke des zu durchsuchenden Rechtecks, die Ausdrücke sein können. Die Koordinaten sind relativ zum aktiven Fenster, sofern das nicht mit CoordMode geändert wurde.

X2,Y2

Die X/Y-Koordinaten der unteren rechten Ecke des zu durchsuchenden Rechtecks, die Ausdrücke sein können. Koordinaten sind relativ zum aktiven Fenster, sofern das nicht mit CoordMode geändert wurde.

Bilddatei

Der Dateiname des Bildes. Wenn kein absoluter Pfad angegeben ist, wird das Bild im A_WorkingDir-Verzeichnis vermutet. Alle Betriebssysteme unterstützen GIF-, JPG-, BMP-, ICO-, CUR- und ANI-Bilder (BMP-Bilder müssen 16-Bit oder höher sein). Folgende Dateitypen sind auch für Symbole geeignet: EXE, DLL, CPL, SCR und andere Typen, die Symbolressourcen enthalten. In Windows XP oder höher werden zusätzliche Bildformate wie PNG, TIF, Exif, WMF und EMF unterstützt. Um Betriebssysteme älter als XP zu unterstützen, kopieren Sie die frei verfügbare GDI+-DLL-Datei von Microsoft in den Ordner von AutoHotkey.exe (bei einem kompilierten Skript muss die DLL in den Ordner des Skripts kopiert werden). Die DLL finden Sie auf www.microsoft.com mit Suchbegriffen wie: gdi redistributable

Optionen: Null oder mehr der folgenden Zeichenketten, die vor dem Dateinamen angegeben werden können. Die Optionen müssen jeweils mit einem Leer- oder Tabulatorzeichen voneinander getrennt werden. Zum Beispiel: *2 *w100 *h-1 C:\Hauptlogo.bmp.

*IconN: Um anstelle der ersten Symbolgruppe eine andere in der Datei zu nutzen, müssen Sie *Icon und direkt danach die Gruppennummer angeben. Zum Beispiel würde *Icon2 das Standardsymbol aus der zweiten Symbolgruppe laden.

*n (Variation): Geben Sie für n eine Nummer zwischen 0 und 255 an, um den Farbtontoleranzbereich von Rot-, Grün- und Blauanteilen einer Pixelfarbe zu bestimmen. Zum Beispiel würde *2 zwei Farbtonvarianten erlauben. Dieser Parameter ist hilfreich, wenn sich die Färbung des Bildes leicht ändert oder wenn Bilddatei ein Format wie GIF oder JPG benutzt, das nicht genau mit einem Bild auf dem Bildschirm übereinstimmt. Wenn Sie 255 Farbtonvarianten angeben, werden alle Farben gefunden. Standardmäßig gelten 0 Farbtonvarianten.

*TransN: Diese Option erleichtert das Finden einer Übereinstimmung, weil man eine Farbe innerhalb des Bildes angeben kann, die mit jeder Farbe auf dem Bildschirm übereinstimmt. Am häufigsten wird diese Option verwendet, um PNG-, GIF- und TIF-Dateien mit transparenten Bereichen zu finden (Symbole benötigen diese Option nicht, weil ihre Transparenz automatisch unterstützt wird). Bei GIF-Dateien funktioniert meistens *TransWhite. Bei PNG- oder TIF-Dateien ist *TransBlack besser geeignet. Ansonsten können Sie für N einen beliebigen Farbnamen oder RGB-Wert angeben (verwenden Sie die Farbentabelle als Orientierungshilfe oder PixelGetColor im RGB-Modus). Beispiele: *TransBlack, *TransFFFFAA, *Trans0xFFFFAA.

*wn und *hn: Breite und Höhe, auf die das Bild skaliert werden soll (diese Breite und Höhe bestimmen auch, welches Symbol aus einer mit mehreren Symbolen bestückten ICO-Datei geladen werden soll). Fehlen beide Optionen, werden Symbole, die aus einer ICO-, DLL- oder EXE-Datei geladen werden, auf die für kleine Symbole verwendete Standardgröße des Systems skaliert, was in der Regel 16x16 ist (Sie können die tatsächliche/interne Größe durch die Angabe von *w0 *h0 erzwingen). Bilder, die keine Symbole sind, werden in ihrer aktuellen Größe geladen. Geben Sie -1 für eine der Abmessungen und eine positive Zahl für die jeweils andere an, um das Bild unter Beibehaltung des Seitenverhältnisses zu verkleinern oder zu vergrößern. *w200 *h-1 beispielsweise macht das Bild 200 Pixel breit und bewirkt, dass dessen Höhe automatisch gesetzt wird.

[v1.1.23+]: Anstelle eines Dateinamens kann auch ein Bitmap- oder Symbol-Handle verwendet werden. Zum Beispiel HBITMAP:*%handle%.

ErrorLevel

[v1.1.04+]: Dieser Befehl ist in der Lage, eine Ausnahme auszulösen, wenn beim Suchen ein Problem auftrat. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird auf 0 gesetzt, wenn das Bild im angegebenen Bereich gefunden wurde, auf 1, wenn es nicht gefunden wurde, oder auf 2, wenn es ein Problem gab, das den Befehl am Suchen hinderte (wie z. B. ein Fehler beim Öffnen der Bilddatei oder eine schlecht formatierte Option).

Bemerkungen

Mit ImageSearch können grafische Objekte auf dem Bildschirm entdeckt werden, deren Texte entweder fehlen oder nur schwer abrufbar sind. ImageSearch kann beispielsweise genutzt werden, um die Position von Bild-Schaltflächen, Symbolen, Webseiten-Links, oder Spielobjekte abzurufen. Einmal lokalisiert, können diese Objekte via Click angeklickt werden.

Manchmal ist es strategisch sinnvoll, nicht das ganze Bild, sondern nur einen kleinen Bereich des Bildes zu suchen. Diese Vorgehensweise kann die Zuverlässigkeit dort verbessern, wo sich das Bild als Ganzes ändert, aber bestimmte Bereiche darin immer gleich bleiben. Eine Möglichkeit zum Extrahieren eines Ausschnittes:

  1. Drücken Sie Alt+Druck, während das Bild im aktiven Fenster sichtbar ist, um ein Screenshot in die Zwischenablage zu platzieren.
  2. Öffnen Sie ein Bildbearbeitungsprogramm wie Paint.
  3. Fügen Sie den Inhalt der Zwischenablage ein (in diesem Fall das Screenshot).
  4. Markieren Sie einen Bereich, der sich nicht ändert und nur einmal im Bild vorkommt.
  5. Kopieren und fügen Sie diesen Bereich in ein neues Bild-Dokument ein.
  6. Speichern Sie es als kleine Datei, um es mit ImageSearch zu verwenden.

Um eine Übereinstimmung zu erreichen, muss das Bild auf dem Bildschirm die gleiche Größe haben wie das im Bilddatei-Parameter definierte Bild.

Der Suchbereich muss sichtbar sein; das heißt, dass es nicht möglich ist, einen Bereich in einem Fenster zu suchen, das hinter einem anderen Fenster liegt. Bilder unterhalb des Mauszeigers werden in der Regel erkannt. Spiele-Mauszeiger hingegen behindern die Sicht auf darunterliegende Bilder in den meisten Fällen.

Da die Suche zeilenweise von oben nach unten erfolgt, wird bei mehreren Übereinstimmungen der oberste Fund bevorzugt.

Die transparente Farbe eines Symbols (falls vorhanden) kann üblicherweise mit jeder Farbe auf dem Bildschirm übereinstimmen. Die Farbe des Hintergrunds spielt daher keine Rolle.

ImageSearch unterstützt Bildschirme mit 8-Bit-Farben (256 Farben) oder höher.

Das Suchverhalten kann variieren, je nachdem, welche Farbtiefe bei der Grafikkarte eingestellt ist (besonders bei GIF- und JPG-Dateien). Ein Skript sollte daher, wenn es unter mehreren Farbtiefen ausgeführt werden soll, zuvor mit jeder Tiefeneinstellung getestet werden. Mithilfe der Farbtontoleranz-Option (*n) können Sie das Verhalten über mehrere Farbtiefen konstant machen.

Wenn das Bild auf dem Bildschirm transparent ist, kann ImageSearch das Bild wahrscheinlich nicht finden. Um das zu umgehen, nutzt man die Farbtontoleranz-Option (*n) oder deaktiviert vorübergehend die Fenstertransparenz via WinSet, Transparent, Off.

Siehe auch

PixelSearch, PixelGetColor, CoordMode, MouseGetPos

Beispiele

ImageSearch, XPos, YPos, 40,40, 300, 300, C:\Meine Bilder\test.bmp

CoordMode Pixel  ; Macht die Koordinaten unten relativ zum Bildschirm, anstatt zum aktiven Fenster.
ImageSearch, XPos, YPos, 0, 0, A_ScreenWidth, A_ScreenHeight, *Icon3 %A_ProgramFiles%\BeliebigeApp\BeliebigeApp.exe
if ErrorLevel = 2
    MsgBox Die Suche konnte nicht durchgeführt werden.
else if ErrorLevel = 1
    MsgBox Symbol konnte nicht auf dem Bildschirm gefunden werden.
else
    MsgBox Das Symbol wurde bei %XPos%x%YPos% gefunden.