PyAutoGUI 中断失败,"WindowsError("windll.user32.ReleaseDC failed : return 0")

问题描述

我创建了一个简单的程序;它点击适合我的屏幕分辨率的 piano game 中的黑色瓷砖。该程序按预期工作,但偶尔会间歇性崩溃。该问题似乎与 pyautogui.pixel(x,y) 相关。我在网上找不到解释或原因,只能建议在较早版本的 Python 上运行该程序。

规格

Operating System : Windows-10-10.0.19041-SP0
Python Version : 3.9.2 (tags/v3.9.2:1a79785,Feb 19 2021,13:44:55) [MSC v.1928 64 bit(AMD64)]
IDE : PyCharm Community Edition 2020.3.4.lnk
pyautogui Version : 0.9.52

代码

import pyautogui
import time
import keyboard

totalClicks = 0
pyautogui.PAUSE = 0.0

while keyboard.is_pressed('q') == False:

    # There are 4 rows of tiles,if pixel is black,click pixel
    if (pyautogui.pixel(350,310)[0]) == 0: # tile1
        pyautogui.moveto(350,310)
        pyautogui.mouseDown()
        time.sleep(0.03)
        pyautogui.mouseUp() 
        totalClicks += 1
    elif (pyautogui.pixel(423,310)[0]) == 0: # tile2
        pyautogui.moveto(423,310)
        pyautogui.mouseDown()
        time.sleep(0.03)
        pyautogui.mouseUp()
        totalClicks += 1
    elif (pyautogui.pixel(527,310)[0]) == 0: #tile3
        pyautogui.moveto(527,310)
        pyautogui.mouseDown()
        time.sleep(0.03)
        pyautogui.mouseUp()
        totalClicks += 1
    elif (pyautogui.pixel(600,310)[0]) == 0: #tile4
        pyautogui.moveto(600,310)
        pyautogui.mouseDown()
        time.sleep(0.03)
        pyautogui.mouseUp()
        totalClicks += 1

print(totalClicks)

exit(0)

错误

C:\Users\shawn\PycharmProjects\pythonProject5\venv\Scripts\python.exe C:/Users/shawn/PycharmProjects/pythonProject5/main.py
Traceback (most recent call last):
  File "C:\Users\shawn\PycharmProjects\pythonProject5\main.py",line 18,in <module>
    if (pyautogui.pixel(350,310)[0]) == 0: # if pixel is black...
  File "C:\Users\shawn\PycharmProjects\pythonProject5\venv\lib\site-packages\pyscreeze\__init__.py",line 584,in pixel
    return (r,g,b)
  File "C:\Users\shawn\AppData\Local\Programs\Python\python39\lib\contextlib.py",line 124,in __exit__
    next(self.gen)
  File "C:\Users\shawn\PycharmProjects\pythonProject5\venv\lib\site-packages\pyscreeze\__init__.py",line 113,in __win32_openDC
    raise WindowsError("windll.user32.ReleaseDC Failed : return 0")
OSError: windll.user32.ReleaseDC Failed : return 0

Process finished with exit code 1

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)