Автоматизация пользовательского интерфейса C#: Current.Name возвращает пустую строку
Я хочу использовать System.Windows.Automation в моей программе на C#, чтобы сообщить о свойстве Name в FocusChangedEvent, как это делает 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) имя отправителя хорошо отображается для тех же элементов.
Как решить эту проблему? Любое направление будет оценено.
1 ответ
Я переключился на UIAComWrapper в моем проекте, и теперь мои результаты согласуются с AccEvent, и это также чувствует себя намного быстрее.
Различия между UIAComWrapper и UIAutomationClient изложены в другом вопросе SO: Разница между UIaComWrapper и UIAutomationCLient + UIAutomationType