在 windows 自动化中使用部分 NameProperty 查找 windows 控件
Find a windows control using partial NameProperty in windows 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 字符串才能正常工作,但我想搜索该字符串的一部分和 return 找到的任何控件。
我该怎么做呢?
谢谢,
约翰
您可以使用预定义的 TrueCondition 迭代子集合,如下所示:
foreach(AutomationElement child in epoWindow.FindAll(TreeScope.Subtree, Condition.TrueCondition))
{
if (child.Current.Name.Contains("whatever"))
{
// do something
}
}
PS:如果您不想破坏应用程序的性能(如果它具有较大的子层次结构)或无限期地等待,则需要谨慎选择 TreeScope...
我正在尝试使用部分 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 字符串才能正常工作,但我想搜索该字符串的一部分和 return 找到的任何控件。 我该怎么做呢? 谢谢, 约翰
您可以使用预定义的 TrueCondition 迭代子集合,如下所示:
foreach(AutomationElement child in epoWindow.FindAll(TreeScope.Subtree, Condition.TrueCondition))
{
if (child.Current.Name.Contains("whatever"))
{
// do something
}
}
PS:如果您不想破坏应用程序的性能(如果它具有较大的子层次结构)或无限期地等待,则需要谨慎选择 TreeScope...