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

本文关键字:UI 元素 ControlType CurrentControlType 属性 | 更新日期: 2023-09-27 18:12:49

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

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

问题:

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

注意:

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

任何想法?

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

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

对于那些仍在寻找如何在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);