【问题标题】: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 值。有什么想法吗?

【问题讨论】:

    标签: python win32gui pysimplegui


    【解决方案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
    • 好吧,我一定是在做一些愚蠢的事情,因为我又试了一次,它起作用了……哈哈,很抱歉,谢谢你的帮助。
    猜你喜欢
    • 2020-10-11
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2022-12-26
    • 1970-01-01
    相关资源
    最近更新 更多