win32gui.GetPixel() 不工作:pywintypes.error: (0, 'GetPixel', 'No error message is available')
Posted
技术标签:
【中文标题】win32gui.GetPixel() 不工作:pywintypes.error: (0, \'GetPixel\', \'No error message is available\')【英文标题】:win32gui.GetPixel() not working: pywintypes.error: (0, 'GetPixel', 'No error message is available')win32gui.GetPixel() 不工作:pywintypes.error: (0, 'GetPixel', 'No error message is available') 【发布时间】:2021-05-26 01:59:32 【问题描述】:在我自己的 pysimplegui 程序和其他程序中,每次使用 GetPixel 时,我都会收到错误:pywintypes.error: (0, 'GetPixel', 'No error message is available')。
while True: # The Event Loop
event, values = window.read()
hwnd = win32gui.FindWindow(None, 'Window that stays open')
rgbint2rgbtuple(win32gui.GetPixel(hwnd, 100, 100))
print(event, values)
if event == sg.WIN_CLOSED or event == 'Exit':
break
唯一一次没有崩溃的是谷歌浏览器,但它给出了错误的 RGB 值。有什么想法吗?
【问题讨论】:
【参考方案1】:您可以使用以下方式获取像素值,
import win32ui
w = win32ui.FindWindow(None, 'Window that stays open')
dc = w.GetWindowDC()
color = dc.GetPixel(100, 100)
如果没有找到窗口“保持打开的窗口”或标题错误,应检查大小写。通过以下代码确认窗口的标题。还要在您的窗口中确认 point(x, y)。
import win32gui
def enumWindowFunc(hwnd, windowList):
text = win32gui.GetWindowText(hwnd)
className = win32gui.GetClassName(hwnd)
if text and className != "IME":
print(repr(text), repr(className))
win32gui.EnumWindows(enumWindowFunc, [])
【讨论】:
所以我这样做了,但我仍然有同样的问题。谷歌浏览器返回 0,几乎其他任何东西都失败:\ "win32ui.error: GetPixel failed" 感谢回复 更新如上。 感谢您的回复。所以我知道窗口在那里并且我使用了正确的名称。我运行了您的代码并在列表中找到了我的窗口。在我当前的测试中,我执行 FindWindow('example'),然后使用 GetWindowRect(hwnd) 打印它的尺寸,但是当我尝试在窗口上运行 GetPixel 时,我遇到了崩溃。唯一不会崩溃的情况是我在 GetActiveWindow() 上运行 GetPixel 好吧,我一定是在做一些愚蠢的事情,因为我又试了一次,它起作用了……哈哈,很抱歉,谢谢你的帮助。以上是关于win32gui.GetPixel() 不工作:pywintypes.error: (0, 'GetPixel', 'No error message is available')的主要内容,如果未能解决你的问题,请参考以下文章
msbuild DevTools.Target /p:Configuration=Debug /p:Platform="Win32"