如何从CurrentControlType属性知道UI元素的ControlType

时间:2014-07-14 22:56:38

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

基本上我正在使用UIAutomationClient.Interop.dll进行我正在进行的一些UI工作,我面临以下问题:

  • 我有一个UI元素我想知道它的控件类型。
  • UIAutomationClient.Interop.dll公开以下属性: IUIAutomationElement :: CurrentControlType属性
  • Above属性返回一个Int,表示Control Type ID但不是ControlType对象。

问题:

  • 我怎么知道它的ID才能知道UI元素的ControlType是什么?我无法找到任何其他有用的信息。

注意

我正在使用UIAutomationTypes.dll来definte ControlType对象

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我在IronPython中使用GetCurrentPropertyValue(AutomationElement.ControlTypeProperty)。可能这就是你想要的。它应该返回ControlType对象。虽然我使用它的字符串表示形式.ProgrammaticName.lstrip('ControlType.').strip("'")

答案 1 :(得分:0)

对于那些仍在寻找如何在 2021 年做到这一点的人(使用 IUIAutomationElement)。 您只需使用 System.Windows.Automation.ControlType 类提供的 LookupById() 函数。

// 
IUIAutomationElement element;
// ...
// your code to retrieve the element you want
// ...

// the next line fixes a bug in ControlType class, as explained here: https://stackoverflow.com/a/13971182/991782
ControlType.Button.ToString();

var elementControlType = System.Windows.Automation.ControlType.LookupById(element.CurrentControlType);