对于测试自动化,我想捕获一个不可见的虚拟桌面。由于显示了安全桌面,甚至无法访问它。
我知道可以连接到复合管理器(“ dwm”)来捕获该桌面上的每个窗口。我想可以将事件发送到该桌面上的Windows。 (我知道这是因为否则测试工具将无法正常工作)
开始重新实现复合管理器之前:是否可以从dwm获取DesktopWindow,如果可以,即使显示了安全的桌面,如何强制dwm执行其工作?
如果我不得不硬着头皮,需要自我约束,那么将所有窗口的底部排列成tom并渲染成某些图像的最快方法是什么?
win10捕获api是否可用于不可见的桌面?
要回答最后一个问题:不,新的win10捕获API无效。例如程序
https://github.com/robmikh/SimpleRecorder/tree/master/SimpleRecorder
无法捕获锁定的桌面,也无法捕获子窗口。
以上是精心制作的版本:
GDI32Util.getScreenshot(handle)
句柄是桌面窗口(锁定时可以工作)或其他窗口句柄(锁定时可以工作,但错过了子窗口)。
因此,唯一的选择是以z顺序从下到上遍历所有窗口。