Farbe+Koordinaten von Pixeln anderer Progs/Screens auslesen?
Vernünftige Haltung! Ich lege es natürlich auf nicht darauf an, bin froh, den Link erhalten zu haben. Download uns Installation verliefen erfolgreich, werde es gleich sofort testen.
			
			
									
									PB 4.30
						Code: Alles auswählen
Macro Happy
 ;-)
EndMacro
Happy EndIch habe mir eine Funktion geschrieben die in einem Fenster die Koordinaten eines Pixels mit bestimmter Farbe finden soll 
Jedoch gibt er mir immer FFFFFF als Color zurück...
Sieht jemand den Fehler?
EDIT:
Habe den Fehler selbst gefunden..
Das Fenster war nicht im Vordergrund ^^
Deshalb sieht mein Code nun so aus:
Aber er gibt mir meistens -1 (als Hex= FFFFFFF) zurück 
			
			
									
									
						Code: Alles auswählen
Procedure FindPixel(WindowName.s,x1,y1,x2,y2,colour)
WindowID = FindWindow_(0, WindowName) 
  For a=x1 To x2
    For b=y1 To y2
      Color=GetPixel_(GetDC_(WindowID),a,b)
      Debug Hex(Color)
      If Color=Colour
        Debug Str(x1)+"  "+Str(x2)
      EndIf
    Next
  Next
EndProcedure
Sieht jemand den Fehler?
EDIT:
Habe den Fehler selbst gefunden..
Das Fenster war nicht im Vordergrund ^^
Deshalb sieht mein Code nun so aus:
Code: Alles auswählen
Global WindowID
Procedure FindPixel(WindowName.s,x1,y1,x2,y2,colour.s)
WindowID = FindWindow_(0, WindowName) 
If WindowID=0:End:EndIf
  Repeat:Delay(1):Until GetForegroundWindow_()=WindowID
  Delay(1000)
  
  For a=x1 To x2
    For b=y1 To y2
      Color=GetPixel_(GetDC_(WindowID),a,b)
      ;Debug "x: "+Str(a)+"  y: "+Str(b)+"  Color: "+Hex(Color)
      If Hex(Color)=Colour
        Debug Str(x1)+"  "+Str(x2)
      EndIf
    Next
  Next
EndProcedure
;z.b.
FindPixel("LOL - Nachrichtensitzung",1,1,50,50,"FFFF00")
also das geht: [aber es wird immer die farbe des windows-standard-grau ausgegeben - frag mich nich wieso, mit solchen DCs kenn ich mich nich aus]
übrigens bei deinem..hab ich mal sinnvollerweise a und b genommen 
			
			
									
									
						Code: Alles auswählen
OpenWindow(0, 100,400,100,100,"lala")
Procedure FindPixel(WindowName.s,x1,y1,x2,y2,Colour)
WindowID = FindWindow_(0, WindowName)
  For a=x1 To x2
    For b=y1 To y2
      Color=GetPixel_(GetDC_(WindowID),a,b)
      Debug Str(a)+","+Str(b)+"      "+Str( Red(color) )+", "+Str( Green(color) )+", "+Str( Blue(color) )+"   $"+Hex(color)
      If Color=Colour
        Debug "         aha !! @"+Str(a)+"  "+Str(b)
      EndIf
    Next
  Next
EndProcedure 
FindPixel("lala", 50,50, 51,50, RGB(224,223,227) )
Repeat :: Until WindowEvent()=#PB_Event_CloseWindowübrigens bei deinem..
Code: Alles auswählen
      If Hex(Color)=Colour
        Debug Str(x1)+"  "+Str(x2)
      EndIf 