Python 如何使用win32gui.ReleaseDC(,)
当我使用代码时,我得到一个Python 如何使用win32gui.ReleaseDC(,),python,Python,当我使用代码时,我得到一个错误('GetPixel','No error messages available'): color=win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()),x,y) 据我所知,我应该在每次使用GetPixel时释放DC(win32gui.ReleaseDC(,))。但我应该使用什么作为窗口句柄和设备上下文句柄呢 据我所知,我可以通过使用win32gui.GetActiveWindow()获得窗口的句柄
错误('GetPixel','No error messages available')
:color=win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()),x,y)
据我所知,我应该在每次使用GetPixel时释放DC(win32gui.ReleaseDC(,))。但我应该使用什么作为窗口句柄和设备上下文句柄呢
据我所知,我可以通过使用win32gui.GetActiveWindow()获得窗口的句柄,对吗?但我不知道如何处理设备上下文
守则:
def get_position_and_color():
a=0
while a<=3:
sleep(1)
x, y = win32api.GetCursorPos()
color = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x , y)
print(str(a)+' '+str(x)+','+str(y)+','+str(color))
# print(a)
a=a+1
get_position_and_color()
def get_position_和_color():
a=0
而a谢谢你的帮助@AKX。
我想我找到了答案。
我在VBA中有相同的代码,它从来不会失败,但在python中。。。
我只是比较了两种代码。
VBA:
lDC=GetWindowDC(0)
调用GetCursorPos(pLocation)
lColour=GetPixel(lDC,pLocation.x,pLocation.y)
Debug.Print(i&“=”&pLocation.x&“=”&pLocation.y&“=”&lColour&“=”)
Python(见上文)
我使用了win32gui.GetActiveWindow()而不是“0”。我猜坐标超出了“activewindow”的边界。你到底想在这里实现什么?首先,GetCursorPos()
返回屏幕坐标;如果使用HWND调用GetDC()
,则DC的坐标将不是屏幕坐标,GetPixel()
可能会尝试访问超出边界的内容。我使用此代码按颜色检测按钮并按下它们。这是唯一的选择(大多数按钮位于远程计算机上,我可以通过远程桌面访问)。在错误出现之前,它一直工作得很好。现在我根本无法使用getpixel。是的,GetDC(NULL)
返回屏幕DC。很高兴你找到了答案!