Я пытаюсь изменить код Python, который делает снимок экрана конкретного окна приложения в Windows 10. Я пытаюсь использовать для этой цели модули win32ui
/ win32gui
из пакета pywin32. Вот неправильный код:
def getWindow():
name = "Windows PowerShell"
window = win32ui.FindWindow(None, name)
windowDC = win32gui.GetWindowDC(window)
Последняя строка вызывает ошибку. Вот соответствующая часть вывода консоли:
File ".\fake_file_name.py", line 9, in getWindow
windowDC = win32gui.GetWindowDC(window)
TypeError: The object is not a PyHANDLE object
Я не очень знаком с системой типов или сообщениями об ошибках Python, но из-за этой ошибки кажется, что GetWindowDC
ожидал аргумент с типом PyHANDLE
. В документации , которую я могу найти для win32gui.FindWindow
, создается впечатление, что PyHANDLE
действительно является типом вывода.
С другой стороны, эти очень похожие строки кода получены из функции работает :
hwin = win32gui.GetDesktopWindow()
hwindc = win32gui.GetWindowDC(hwin)
Вот do c страница для win32gui.GetDesktopWindow
. Если в ранее показанном сообщении об ошибке не упоминалось PyHANDLE
, я бы просто предположил, что FindWindow
и GetDesktopWindow
возвращают разные и несовместимые типы.
Может кто-нибудь помочь мне понять, что означает это сообщение об ошибке, и почему это появляется? Я также был бы заинтересован примером кода, который получает контекст устройства для окна с именем «Windows Powershell», как пытался сделать мой сломанный код.
Другая информация: Страница документации для win32gui.GetWindowDC