pywin32:通过坐标获取颜色

1 投票
1 回答
4163 浏览
提问于 2025-04-17 17:43

我写了这段代码,让鼠标在坐标 (100, 200) 的位置点击一下,然后我按下了退格键:

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()

现在我想做的是检查一下在 (100, 200) 这个位置的颜色是不是红色。我该怎么做呢?

补充说明:
我已经找到解决办法了...

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

无论如何,还是谢谢你们。

1 个回答

3

根据你的回答

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

你得到的是一个整数,这对某些人(像我这样的人)来说可能不太友好。

如果你想要一个RGB元组,可以查看这个回答:RGB整数转RGB - Python

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

最后,你还得检查这个颜色是不是红色,如果你也接受类似的颜色,那就可能不太简单了,因为不仅仅是简单的红色(也就是(255, 0, 0))。

撰写回答