我正在将一个窗口(属于另一个进程)移到前面以截取它的屏幕截图。我可以使用SetForegroundWindow
来完成此操作,但是该函数会立即返回。另一个过程需要花费不同的时间来重绘其主窗口(这要求它访问数据库),所以我不能确定当我截取屏幕截图时窗口已完全呈现。有时我在屏幕截图中获得的只是目标窗口的轮廓,在前面的任何窗口之上。等待另一个Windows进程重新绘制其主窗口的可靠方法
是否有可靠的方法来等待另一个进程的窗口被完全绘制?我怀疑没有,但它值得一试。也许有一条消息,我可以发送到窗口,会有这种效果?
注意:实现语言并不重要,但我需要一个使用本机Windows API的解决方案,无论是直接从C/C++代码还是通过P/Invoke(例如从C#或VB.NET)。不幸的是我不能使用任何WinForms函数。
原Z-为了我仍然有同样的问题。在完成绘画之前,'UpdateWindow'返回得太快。 – finnw 2010-07-18 17:15:17
@finnw:我想'UpdateWindow'后,我会调用'WaitForInputIdle',看看这是否有诀窍。我之前没有在这种情况下使用'WaitForInputIdle',所以我不能保证它会有效,但我猜想至少有一个相当不错的机会... – 2010-07-18 17:17:35
@Jerry Coffin IIRC WaitForInputIdle只适用于进程正在启动。 – Anders 2010-07-18 17:34:14