2012-03-09 66 views
2

内部应用程序是否可以运行Windows应用程序(即打开一个顶层窗口),另一个窗口里面?或者设置一个备用的“桌面”/假桌面,拥有该窗口?运行Windows的另一个窗口

我使用的UI自动化自动化测试的应用程序。我想将应用程序置于一种沙盒中:桌面和应用程序之间的人造父窗口,或者伪桌面,第二个桌面等。此桌面(和待测应用程序)不需要可见。

被测应用程序的不同实例(在普通桌面或沙箱中)不应相互冲突(窗口名称/类明智) - 被测试的应用程序可安全地拥有多个实例...

我意识到这看起来很骇人,所以win32黑客会受到欢迎。 :)

+0

这是支持的,你可以调用的setparent()粘上你里面的一个窗口。根本没有帮助,你仍然需要窗口手柄来做任何有意义的事情。调用GetWindowRect()完成同样的事情。 – 2012-03-10 13:50:27

回答

4

你可以尝试使用CreateDesktop创建桌面,并启动目标应用程序时,在STARTUPINFO通过它的名字。

+0

太棒了,谢谢。今晚我会玩这个。 – 2012-03-09 21:59:37

+2

请注意,这存在一些限制:操作应用程序的许多UIAutomation功能(与仅返回信息相反)要求目标用户界面具有输入焦点,但应用程序只能在当前活动桌面上接收输入焦点。因此,您可以创建桌面并在其上放置应用程序,但如果该桌面不是当前(可见的)桌面,则某些自动操作可能会以意想不到的方式失败。 – BrendanMcK 2012-03-13 08:25:06

+0

有关与非活动桌面自动化问题的一些详细信息,请参阅我的回答一个相关的问题[这里](http://stackoverflow.com/questions/9563549/what-happens-behind-the-windows-lock -screen/9565714#9565714)。 – BrendanMcK 2012-03-13 09:07:15

相关问题