【发布时间】:2011-04-14 11:07:50
【问题描述】:
Vista 和 Win7 使用 DWM,因此,我可以从任何顶级窗口读取任何像素,没有问题。 然而,在 XP 中,如果窗口被重叠(被另一个顶级窗口),bye bye - 无法读取任何内容。
所以,选项是 - 使用 WM_PRINT,这有点糟糕,因为我需要每 100 毫秒左右刮屏幕 10 个窗口 - 不酷。
除了 GetPixel 之外,还有其他读取像素的方法,或者其他解决方法吗?
最好, 约翰
【问题讨论】:
-
我假设您实际上是指 layered 窗口(具有
WS_EX_LAYERED扩展样式的窗口)?您可以在所有版本的 Windows 上正常读取重叠窗口(具有WS_OVERLAPPED样式的窗口)的像素。 -
我的意思是,一个顶层窗口至少有一部分与另一个顶层窗口重叠。在这种情况下,您无法从中读取像素(使用 GetPixel)。
-
啊,不。该像素实际上并不存在于屏幕上。
WM_PRINT是唯一的解决方法——只有那个窗口知道它应该在那里绘制什么颜色。为什么需要每 100 毫秒轮询特定像素的颜色? -
对于speak-poker.com 基本上我需要知道每个扑克桌上是否显示按钮 - 唯一的方法是通过屏幕抓取。
标签: winapi windows-xp