2012-03-09 67 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

相關問題