检测Windowsanimation设置

我正在开发一个程序,对正在开发的Windows应用程序进行基本的烟雾testing和验收testing。 它所做的一部分就是当应用程序首次出现时快照应用程序的顶层窗口。 它通过启动进程,等待input空闲,枚举顶层窗口,然后获取窗口DC和blitting从而完成此操作。

事实certificate,顶层窗口的第一个外观默认为animation – 淡入并扩展到其实际大小 – 至less在Windows 7上。animation过程中的屏幕截图可能缺less窗口框架或框架缩小并部分透明。

作为顶级窗口外观动画的Hello-World应用的屏幕截图正在进行中

我可以通过在截图之前添加一个延迟(例如, Sleep(250) )来避免这个问题,但是我无法findanimation实际需要多长时间的任何信息。 如果animation在未来的Windows版本上花费更长时间(或者用户可以调整),则延迟时间可能不够长。 如果animation被禁用,那么我只是在浪费时间。 (该工具将用于运行很多testing,所以四分之一秒的延迟可能会加起来。)

我可以通过检查“轻松访问中心”控制面板中的“closures所有不必要的animation”checkbox来避免此问题,这似乎禁用了此animation。 我想这可能对应于通过SystemParametersInfo编程访问的设置(或设置)。 如果我可以检查animation何时启用,我可以只在需要的时候添加延迟。 我也可以考虑在testing期间禁用animation,然后恢复用户的select。

但我似乎无法find与此特定animation对应的SPI设置。 有SPI_GETANIMATION,它表示是否启用最小化和恢复animation。 但是,该设置与设置顶级窗口外观animation无关。

是否有一个API来检测是否启用顶级窗口外观animation? 有没有一个设置来控制他们的速度,所以我的代码知道要延迟多久? 是否有一个信号我的程序可以注意知道什么时候从一个subprocess的窗口完全画和完成animation?

Solutions Collecting From Web of "检测Windowsanimation设置"

答案似乎是“不”。

David Heffernan成功确定了这是桌面窗口管理器转换设置。 不幸的是,似乎没有读取此设置的API。 您可以使用DwmSetWindowAttribute DWMWA_TRANSITIONS_FORCEDISABLED来更改它,但它是一个全局设置,所以这是不可取的。 同样,动画的持续时间也不会暴露。

如果有人发现相反的信息(或者如果一个API被添加到新版本的Windows中),请添加一个答案,我会接受它。