Pixelsearch Hilfe/Frage

05/09/2014 18:54 flumio#1
Code:

Bild:

Sodala bin nun schon eine sehr lange Zeit ohne Hilfe weiter gekommen, nun ist es mal wieder so weit das ich fest stecke.

Kurze Erklärung:
-auf dem Bild möchte ich das "t" von der Datei "test" finden.
-der Radius ist auf den Ausschnitt vom Bild meines Desktops begrenzt.
-ich habe das "t" vergrößert und jeden einzelnen Pixel entnommen.
-beim starten meines Skripts, bleibt er aber oben beim "A" von "100ANDTO" hängen bzw. das findet er.

Bisher habe ich es immer sehr einfach mit ImageSearch gelöst, da man das aber ohne weiteres nicht sharen kann, möchte ich auf Pixelsearch zurück greifen.

Vllt. führe ich einen falschen Befehl aus, obwohl ich denke das man doch auf diese weise pixel pattert?
Hat jemand Ahnung und kann mir weiterhelfen und mein Wissen erweitern ?
05/09/2014 20:35 alpines#2
Quote:
Code:
HotKeySet ("{F3}", "Start")
HotKeySet ("{F4}", "_Exit")

Dim $color[13] = [11993062, 11993058, 11993087, 16777215, 16777215, 16759681, 11993051, 11993051, 11993051, 11993051, 6732287, 16777215, 16759159]

Func Start()
	$t = PixelSearch(1271, 4, 1349, 287, $color)
	If IsArray($t) Then
	MouseMove($t[0], $t[1], 25)
	EndIf
EndFunc

While 1
	Sleep(10)
WEnd

Func _Exit()
	Exit
EndFunc
Dim $color[13] = [11993062, 11993058, 11993087, 16777215, 16777215, 16759681, 11993051, 11993051, 11993051, 11993051, 6732287, 16777215, 16759159]

$t = PixelSearch(1271, 4, 1349, 287, $color)
LOL, das Kapitel Arrays hast du wohl im Klo runtergespült.

Wenn du einen Array mit $color ansprichst, dann übergibst du das ganze Array als Parameter, aber color bei PixelSearch akzeptiert keine Arrays sondern Werte, in deinem Fall müsste da eine For-Schleife hin.
Code:
HotKeySet ("{F3}", "Start")
HotKeySet ("{F4}", "_Exit")

Dim $color[13] = [11993062, 11993058, 11993087, 16777215, 16777215, 16759681, 11993051, 11993051, 11993051, 11993051, 6732287, 16777215, 16759159]

Func Start()
	For $i = 0 To UBound($color) - 1
		$t = PixelSearch(1271, 4, 1349, 287, $color[$i])
		If IsArray($t) Then MouseMove($t[0], $t[1], 25)
	Next
EndFunc

While 1
	Sleep(10)
WEnd

Func _Exit()
	Exit
EndFunc
So oder so ähnlich.
05/09/2014 21:08 flumio#3
Yeah das mit der For Schleife hab ich auch schon mal gelesen, war mir aber nicht ganz sicher ob ich da auf dem richtigen Weg bin.
Dann sag ich schon mal danke und werde mich weiter in diese Richtung arbeiten und ggf. Bericht erstatten.

Edit:
So, da du mir den richtigen weg gezeigt hast bin ich an mein Ziel gekommen.
Hab das Kapitel Arrays wieder aus dem Klo gefischt und mich damit beschäftigt.
Kombiniere nun ne For While Error Schleife um mein Ergebnis zu bekommen.
Nochmals vielen dank.