c# - 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 之间的差异
推荐阅读
- python-3.x - pxd 相对 cimport 适用于 language_level 2 但不适用于 3
- java - 是否可以使 java 方法超时?
- rest - Invoke-RestMethod 上传 ZIP 文件
- html - 块元素修改器 - 使用没有“元素”的 BEM?
- javascript - Javascript更改样式表中的值
- mysql - 我想将指定行中的一项插入另一个表
- r - 根据有关其名称的条件重命名列
- android - Alloy.js 中的全局变量
- android - 上一个条目使用自定义保存方法覆盖旧条目
- sql - #1235 - 此版本的 MariaDB 尚不支持 MySQL 中的“LIMIT & IN/ALL/ANY/SOME 子查询”