我们正在使用下面的代码从另一个应用程序窗口内的 ComboBox 中获取项目列表。此代码适用于我们测试过此代码的任何其他应用程序中的组合框(正确检索项目列表),但是对于此特定应用程序,为每个 ListItem 检索的 Name 属性是乱码。
这是代码:
using System.Windows.Automation;
var condition = new PropertyCondition(AutomationElement.NameProperty, "Change/Add/Delete Setting");
var condition2 = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window);
var condition3 = new AndCondition(new Condition[] {condition, condition2});
var window = AutomationElement.RootElement.FindFirst(TreeScope.Subtree, condition3);
condition = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ComboBox);
var combo = window.FindFirst(TreeScope.Subtree, condition);
condition = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem);
AutomationElementCollection children = combo.FindAll(TreeScope.Subtree, condition);
var comboItems = new List<string>();
foreach (AutomationElement child in children)
{
comboItems.Add(child.Current.Name);
}
这是我们最终为这个应用程序完成的屏幕截图。
- 什么可能导致 Name 属性出现这样的乱码?这可能是编码问题吗?
- 我们如何才能获得每个项目的正确文本?