在Windows自动化中使用部分NameProperty查找Windows控件

时间:2015-06-12 13:20:50

标签: c# windows ui-automation microsoft-ui-automation

我正在尝试使用部分NameProperty识别Windows静态文本控件。这是我的代码:

// Get a reference to the window
AutomationElement epoWindow = AutomationElement.RootElement.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ClassNameProperty, "MsiDialog"));
// Get a reference to the control
AutomationElement epoControl = epoWindow.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.NameProperty, controlText));

我目前需要完整的controlText字符串才能使用,但我想搜索该字符串的一部分并返回找到的所有控件。 我该怎么做呢? 谢谢, 约翰

1 个答案:

答案 0 :(得分:1)

您可以使用预定义的TrueCondition迭代子集合,如下所示:

  foreach(AutomationElement child in epoWindow.FindAll(TreeScope.Subtree, Condition.TrueCondition))
  {
      if (child.Current.Name.Contains("whatever"))
      {
          // do something
      }
  }

PS:如果您不想杀死应用程序的性能(如果它具有较大的子级层次结构)或者无限期等待,您需要仔细选择TreeScope ...