我一直在研究在 Windows 7 上使用 wx python 包。具体来说,我希望能够获取现有窗口(即不是由 python 程序打开的窗口)的图像数据。看来我可以通过获取窗口的设备上下文、创建兼容的设备上下文、复制位图,然后按照我喜欢的方式使用它来完成此操作。问题是我似乎找不到获取现有窗口的设备上下文(或句柄)的方法。我只看到使用 wx 创建的 python 程序从 windows 获取它们的方法。我怎样才能做到这一点?非常感谢!
最佳答案
wx 可能没有办法做到这一点。
您需要的 Windows API 非常简单,您可以通过 win32api
使用它们(如果您愿意,也可以通过 ctypes
,但这需要更多工作)。
首先,我不知道你打算如何识别你想要的窗口。如果你有它的类和名称,你可以直接 FindWindow
(或者,如果它可能不是顶级窗口, FindWindowEx
)。如果您想通过其他方式搜索,您可能需要调用EnumWindow
(如果您不确定它是顶级窗口,则递归地加上EnumChildWindows
)。
此时,您只需调用wx.Windows.AssociateHandle
即可将wx.Window
对象附加到HWND。
如果您出于某种原因无法做到这一点,GetDC
为您提供 HWND 的显示上下文。然后,您可以创建一个内存 DC,或者获取 wx 窗口下的 native 窗口的 DC,以及 BitBlt
从一个到另一个。
关于python - wxPython - 使用 wx python 模块获取现有的 windowDC/句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19991391/