.NET Core 8控制台应用中如何使用AutomationElement?
在.NET Core 8控制台应用中使用AutomationElement实现UI自动化
1. 安装正确的NuGet包
在Visual Studio 2022中右键项目 → 管理NuGet程序包,搜索并安装以下两个官方兼容包:
System.Windows.Automation.UIAutomationClientSystem.Windows.Automation.UIAutomationTypes
这两个包专门适配.NET Core/.NET 5+环境,包含AutomationElement类及UI自动化所需的全部核心类型。
2. 引用命名空间
在代码文件顶部添加命名空间引用:
using System.Windows.Automation;
3. 基础使用示例
以下是获取桌面根元素并查找记事本窗口的简单实现:
// 获取桌面根元素 AutomationElement desktopRoot = AutomationElement.RootElement; // 查找标题包含"记事本"的窗口 var windowCondition = new PropertyCondition( AutomationElement.NameProperty, "记事本", PropertyConditionFlags.IgnoreCase); AutomationElement notepadWindow = desktopRoot.FindFirst(TreeScope.Children, windowCondition); if (notepadWindow != null) { // 查找记事本的编辑框控件 var editBoxCondition = new PropertyCondition( AutomationElement.ControlTypeProperty, ControlType.Edit); AutomationElement editBox = notepadWindow.FindFirst(TreeScope.Descendants, editBoxCondition); // 向编辑框输入文本 if (editBox != null && editBox.TryGetCurrentPattern(ValuePattern.Pattern, out object patternObj)) { var valuePattern = patternObj as ValuePattern; valuePattern?.SetValue("在.NET Core 8中实现UI自动化"); } }
关键注意事项
- 应用需以管理员权限运行,否则可能无法访问系统级窗口或受保护控件。可右键程序选择"以管理员身份运行",或在项目属性中配置启用完全信任权限。
- 避免使用非官方的第三方UIAutomation包,这类包大多未适配.NET Core 8环境,容易出现类型缺失问题。
内容的提问来源于stack exchange,提问作者Omar Ababneh
相关产品推荐
相关产品推荐

