在另一个窗口中运行 Windows 应用程序

Cra*_*ste 3 windows winapi ui-automation

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

我正在使用 UI 自动化来自动化应用程序进行测试。我想将正在测试的应用程序放在一种沙箱中:桌面和应用程序之间的人工父窗口,或伪桌面,第二个桌面等。此桌面(以及正在测试的应用程序)不需要可见。

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

我意识到这看起来有些 hackish,所以 win32 hacks 会受到欢迎。:)

Nei*_*eil 5

您可以尝试使用CreateDesktop创建桌面,并在启动目标应用程序时在 STARTUPINFO 中传递其名称。

  • 请注意,这有一些限制:操作应用程序的大部分 UIAutomation 功能(而不是仅返回信息)要求目标 UI 具有输入焦点,但应用程序只能在当前活动桌面上接收输入焦点。因此,您可以创建一个桌面并在其上放置一个应用程序,但如果该桌面不是当前(可见)桌面,则某些自动化可能会以意想不到的方式失败。 (2认同)