我正在尝试修改一些在 Windows 10 中截取特定应用程序窗口屏幕截图的 Python 代码。我正在尝试使用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
. 文档 http://timgolden.me.uk/pywin32-docs/win32gui__FindWindow_meth.html我可以找到win32gui.FindWindow
使它看起来像PyHANDLE
确实是输出类型。
另一方面,这些非常相似的代码行来自一个函数does work:
hwin = win32gui.GetDesktopWindow()
hwindc = win32gui.GetWindowDC(hwin)
这里是doc page http://timgolden.me.uk/pywin32-docs/win32gui__GetDesktopWindow_meth.html for win32gui.GetDesktopWindow
。如果之前显示的错误消息没有具体提及PyHANDLE
,我只是假设FindWindow
and GetDesktopWindow
返回不同且不兼容的类型。
有人可以帮助我理解此错误消息的含义以及出现的原因吗?我还对获取名为“Windows Powershell”的窗口的设备上下文的示例代码感兴趣,正如我损坏的代码尝试做的那样。
其他信息:文档页面 http://timgolden.me.uk/pywin32-docs/win32gui__GetWindowDC_meth.html for win32gui.GetWindowDC