Hi,
danke Zardos.
Meine vorherige Frage hat sich erledigt, brauche keinen Rahmen mehr. Hab herausbekommen, dass man den "hDC" auf null setzen muss. Dann kann der Cursor sich auch auserhalb der Runtime bewegen und nach Pixel suchen.
z.B.
nDC = GetDC(0)
ScreenPixelColor = GetPixel(nDC, nPoint.x, nPoint.y)
ReleaseDC 0, nDC Das mit dem Screenshot würde nicht klappen, weil ich in einem bewegtem "Bild" nach Pixel suche.
Ich habe das jetzt ganz einfach gemacht, vielleicht nicht so professionell, aber es scheint zu laufen
Und zwar grenze ich den Bereich ein (X,Y Positionsangaben und Startposition), dann "fahre" ich mit dem Cursor eine Sinuskurve nach rechts und eine inv. Cosinuskurve zurück und mein Pixel wird zu 99,9% gefunden, da die Pixelfarbe nicht nur 1x1px ist, wird es leichter entdeckt. Übrigens ich strecke die Sin und Cos mit einem Faktor, so kann ich einen grösseren Bereich absuchen ohne jeden einzelnen Pixel abfragen zu müssen.
Beispiel:
Private Sub Timer3_Timer()
Dim aX%, aY%, dx%, dy%
Dim Pt As POINTAPI
Dim xBreit As Long
Dim R, G, B
xGo = Text1.Text
yGo = Text2.Text
Faktor = Text3.Text
xBreit = Text4.Text
Pt.x = xGo
Pt.y = yGo
SetCursorPos xGo, yGo
If ZeigerRechts = False Then
If xwert <= xBreit Then
Sinus xwert, ywert, Faktor
dx = xwert + xGo
dy = ywert + yGo
Pt.x = dx
Pt.y = dy
SetCursorPos Pt.x, Pt.y
Label1.Caption = "X: " & Pt.x & " Y: " & Pt.y
Label3.Caption = ScreenPixelColor
R = (ScreenPixelColor And &HFF&)
G = (ScreenPixelColor And &HFF00&) \ 256
B = (ScreenPixelColor And &HFF0000) \ 65536
Label4.Caption = R & ", " & G & ", " & B
End If
If ScreenPixelColor = searchpixel
MsgBox "Gefunden"
End If
xwert = xwert + 1
End If
If xwert >= xBreit Then
ZeigerRechts = True
End If
If ZeigerRechts = True Then
If (xwert + xGo) > xGo Then
Cosinus xwert, ywert, Faktor
dx = xwert + xGo
dy = ywert + yGo
Pt.x = dx
Pt.y = dy
SetCursorPos Pt.x, Pt.y
Label1.Caption = "X: " & Pt.x & " Y: " & Pt.y
Label3.Caption = ScreenPixelColor
R = (ScreenPixelColor And &HFF&)
G = (ScreenPixelColor And &HFF00&) \ 256
B = (ScreenPixelColor And &HFF0000) \ 65536
Label4.Caption = R & ", " & G & ", " & B
End If
If ScreenPixelColor = searchpixel
MsgBox "Gefunden"
End If
If xwert <= 0 Then
Me.Timer3.Enabled = False
ZeigerRechts = False
End If
xwert = xwert - 1
End If
End Sub Danke nochmal für die Hilfe.
MfG
Malkoc |