C# UI 自动化:Current.Name 返回空字符串



我想在我的C#程序中使用System.Windows.Automation来报告FocusChangedEvent上的Name属性,就像AccEvent.exe一样。

我有一个简单的控制台应用程序,每当触发 FocusChangedEvent 时,它应该显示发件人的姓名:

Automation.AddAutomationFocusChangedEventHandler((sender, e) => {
AutomationElement element = sender as AutomationElement;
if (element != null)
{
Console.WriteLine(element.Current.Name);
}
});

这主要按照我的预期工作。在窗口和窗口中的元素之间切换焦点将显示焦点元素的名称。但是,对于许多元素,Name 属性返回空字符串 ("(。

使用AccEvent.exe(UIA FocusEvent(进行检查,发件人名称对于相同的元素显示正常。

如何对此进行故障排除?任何方向将不胜感激。

我在项目中切换到UIAComWrapper,现在我的结果与AccEvent一致,而且感觉也快得多。

UIAComWrapper和UIAutomationClient之间的区别在另一个SO问题中陈述: UIaComWrapper 和 UIAutomationCLient + UIAutomationType 的区别

最新更新