Comment utiliser Set Focus de la fenêtre enfant MDI avec UIAutomation

Nous avons une ancienne application héritée que nous devons automatiser. Il utilise MDI Windows.

Nous utilisons UIAutomation et je peux obtenir avec succès le AutomationElement approprié pour chaque fenêtre enfant MDI. Ce que je ne peux pas faire, c’est mettre cet élément au centre.

Voici un exemple de code que j’ai essayé, mais qui échoue:

var desktop = AutomationElement.RootElement; var dolphin = desktop.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "Dolphin for Windows", PropertyConditionFlags.IgnoreCase)); dolphin.SetFocus(); var workspace = dolphin.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "Workspace", PropertyConditionFlags.None)); var childWindow = workspace.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "Sharp ")); childWindow.SetFocus(); 

La dernière ligne de ce code échoue avec System.InvalidOperationException

En expérimentant, j’ai essayé de trouver un contrôle sur la fenêtre enfant et d’appeler SetFocus dessus. Il a correctement défini le focus sur le contrôle de droite, mais il n’a pas amené la fenêtre MDI au premier plan.

Des idées?

Avez-vous essayé “BringToFront” avant de définir le focus? J’imagine que le contrôle de niveau supérieur (mdi-parent) ne permet pas de se concentrer sur les enfants ou est incapable de le faire lorsque l’enfant (mdi-child) n’est pas visible.