Johnny
Johnny

Reputation: 512

pywin32: Get color by using coordinates

I wrote this code to make a mouse click on the x,y position 100,200 and after that I'm pressing the backspace button:

import win32api, win32con
import time

def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

def press_back():
    win32api.keybd_event(0x08,0,0,0) #click backspace
    time.sleep(0.1)
    win32api.keybd_event(0x08,0,2,0) #release backspace

click(100,200)
press_back()

What I want to do now is to check if the color at 100,200 is red. How can I do this?

EDIT: I have the solution...

color = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), 100 , 200)

thanks anyways

Upvotes: 1

Views: 4356

Answers (1)

iacopo
iacopo

Reputation: 683

With your answer

color = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), 100 , 200)

you get an integer, which for someone (like me) could be not really friendly.

If you want an RGB tuple, you can check this answer: RGB Int to RGB - Python.

def rgbint2rgbtuple(RGBint):
    blue =  RGBint & 255
    green = (RGBint >> 8) & 255
    red =   (RGBint >> 16) & 255
    return (red, green, blue)

Finally, you have tho check if the color is red, that could be not so easy if you accept also similar colors, not only and simply the pure red (that is (255, 0, 0)).

Upvotes: 3

Related Questions