我们有一个旧的遗留应用程序需要自动化。它使用 MDI 窗口。
我们正在使用UIAutomation,我可以成功地为每个 MDI 子窗口获取适当的 AutomationElement。我不能做的是把那个元素放在焦点上。
这是我尝试过的一些示例代码,但失败了:
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();
此代码中的最后一行因 System.InvalidOperationException 而失败
实验中,我尝试在 childWindow 上找到一个控件,并在其上调用 SetFocus。它确实正确地将焦点设置在正确的控件上,但它没有将 MDI 窗口带到前台。
有任何想法吗?