2016-06-20 18 views
0

Ich möchte eine .NET WinForm-Anwendung mit Teststack White und System.Windows.Automation in C# automatisieren.Holen Sie sich die Liste aller geöffneten MDI-Fenster

Es gibt auf einmal mehrere geöffnete Fenster unter MdiClient, ich möchte die Liste aller unter MdiClient geöffneten Unterfenster bekommen.

Ich versuche:

var window = application.GetWindows().Find(obj => obj.Title.StartsWith("Helios Green")); 
window.Focus(DisplayState.Maximized); 

AutomationElementCollection allChildren = 
     window.AutomationElement.FindAll(TreeScope.Children, 
     new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window)); 

Aber das gibt leere Sammlung, da die MdiChlidren Fenster sind nicht direkt Kinder des Hauptfensters, aber es gibt eine MdiClient Klassenname = WindowsForms10.MDICLIENT.app.0.33c0d9d dazwischen, wie in gesehen prüfen.

Wie bekomme ich die Liste aller geöffneten MDI-Unterfenster?

Antwort

0

Ich konnte so umgehen:

AutomationElementCollection allChildren = 
     window.AutomationElement.FindAll(TreeScope.Children, 
     new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Pane)); 
AutomationElementCollection subwindows = 
     allChildren[0].FindAll(TreeScope.Children, 
     new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window)); 

Das MDIClient ist das erste Fenster innerhalb des Hauptfensters.