【问题标题】:How to get a custom property value which cannot be accessed using AutomationElement properties in c#如何获取无法使用 C# 中的 AutomationElement 属性访问的自定义属性值
【发布时间】:2018-07-09 16:50:45
【问题描述】:

我想获取属性 Value.Value 下的文本“Running”。但是,这不是 AutomationElement 类的可用字段中列出的属性的一部分。

【问题讨论】:

    标签: c# user-interface properties automation automationelement


    【解决方案1】:

    托管的 UI 自动化 API 使用起来有点奇怪和棘手(除此之外:TBH,它作为一个 API 非常糟糕,需要大修,使用它任何时间,你会发现自己用你的自己的方法使其更易于使用,也许有人已经这样做了,并将其放入一个不错的库中,IDK)。

    要检索属性值(或调用可用方法),您首先需要获取AutomationElement 的“模式”。我们感兴趣的模式是ValuePattern

    element.GetCurrentPattern(ValuePattern.Pattern);
    

    这个方法烦人地返回一个我们需要转换的普通object,所以我们可以得到值。使用 C#7 语法,这会稍微不那么痛苦:

    if(element.GetCurrentPattern(ValuePattern.Pattern) is ValuePattern valuePattern)
    {
        Console.WriteLine(valuePattern.Current.Value);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 2015-04-26
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 2013-04-16
      • 2019-05-20
      • 1970-01-01
      相关资源
      最近更新 更多