c#控制WPF程序自动登录(Automation方式实现)

简介: 原文:c#控制WPF程序自动登录(Automation方式实现)说明:winForm窗体,可以通过win32接口dll的findWindow之类的函数来实现查找winform窗口,mfc窗口等。 但是wpf却是不实用这些,可以靠automation方式来进行操作。
原文: c#控制WPF程序自动登录(Automation方式实现)

说明:winForm窗体,可以通过win32接口dll的findWindow之类的函数来实现查找winform窗口,mfc窗口等。

但是wpf却是不实用这些,可以靠automation方式来进行操作。

通常可以用来其他c#程序,控制wpf程序来模拟登录按钮事件等。

本程序就是通过找到文本框元素和按钮元素,来实现赋值和点击,从而模拟登录的。

主要代码如下:

1.根据窗口名称查找到“主窗体AutomationElement元素”

 var rootElement = AutomationElement.RootElement;

  Condition mainWindowCondition = new PropertyCondition(AutomationElement.NameProperty, "MainWindow");

2.根据“主窗体AutomationElement元素”,查找窗体子元素并赋值

  var appElement = rootElement.FindFirst(TreeScope.Children, mainWindowCondition);

//文本
var txt = appElement.GetElementByName("tbx");

var txtPattern = txt.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
if (txtPattern != null) txtPattern.SetValue("新的名字");

3.根据“主窗体AutomationElement元素”,查找窗体子元素并实现点击事件

//按钮
var btn = appElement.GetElementByName("btn");

var btnPattern = btn.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
if (btnPattern != null) btnPattern.Invoke();

 

源码:https://files.cnblogs.com/files/lizhijian/wpf%E7%A8%8B%E5%BA%8F%E7%9A%84%E8%87%AA%E5%8A%A8%E7%99%BB%E5%BD%95%E5%AE%9E%E7%8E%B0.rar

感谢阅读

 

目录
相关文章
C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】
本文介绍了在C# WPF应用程序中引入外部iconfont图标时可能遇到的显示问题及其解决方法:1) 检查资源路径和引入格式是否正确,确保字体文件引用格式为“#xxxx”,并正确指向字体文件位置;2) 确保图标资源被包含在程序集中,通过设置字体文件的生成操作为Resource(资源)来实现。
C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】
|
16天前
|
编解码 C# 数据库
C# + WPF 音频播放器 界面优雅,体验良好
【9月更文挑战第18天】这是一个用 C# 和 WPF 实现的音频播放器示例,界面简洁美观,功能丰富。设计包括播放/暂停按钮、进度条、音量控制滑块、歌曲列表和专辑封面显示。功能实现涵盖音频播放、进度条控制、音量调节及歌曲列表管理。通过响应式设计、动画效果、快捷键支持和错误处理,提升用户体验。可根据需求扩展更多功能。
|
22天前
|
C# 容器
C#中的命名空间与程序集管理
在C#编程中,`命名空间`和`程序集`是组织代码的关键概念,有助于提高代码的可维护性和复用性。本文从基础入手,详细解释了命名空间的逻辑组织方式及其基本语法,展示了如何使用`using`指令访问其他命名空间中的类型,并提供了常见问题的解决方案。接着介绍了程序集这一.NET框架的基本单位,包括其创建、引用及高级特性如强名称和延迟加载等。通过具体示例,展示了如何创建和使用自定义程序集,并提出了针对版本不匹配和性能问题的有效策略。理解并善用这些概念,能显著提升开发效率和代码质量。
36 4
|
28天前
|
Linux C# 开发者
Uno Platform 驱动的跨平台应用开发:从零开始的全方位资源指南与定制化学习路径规划,助您轻松上手并精通 C# 与 XAML 编程技巧,打造高效多端一致用户体验的移动与桌面应用程序
【9月更文挑战第8天】Uno Platform 的社区资源与学习路径推荐旨在为初学者和开发者提供全面指南,涵盖官方文档、GitHub 仓库及社区支持,助您掌握使用 C# 和 XAML 创建跨平台原生 UI 的技能。从官网入门教程到进阶技巧,再到活跃社区如 Discord,本指南带领您逐步深入了解 Uno Platform,并提供实用示例代码,帮助您在 Windows、iOS、Android、macOS、Linux 和 WebAssembly 等平台上高效开发。建议先熟悉 C# 和 XAML 基础,然后实践官方教程,研究 GitHub 示例项目,并积极参与社区讨论,不断提升技能。
37 2
|
2月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
|
2月前
|
安全 C# 开发者
【C# 多线程编程陷阱揭秘】:小心!那些让你的程序瞬间崩溃的多线程数据同步异常问题,看完这篇你就能轻松应对!
【8月更文挑战第18天】多线程编程对现代软件开发至关重要,特别是在追求高性能和响应性方面。然而,它也带来了数据同步异常等挑战。本文通过一个简单的计数器示例展示了当多个线程无序地访问共享资源时可能出现的问题,并介绍了如何使用 `lock` 语句来确保线程安全。此外,还提到了其他同步工具如 `Monitor` 和 `Semaphore`,帮助开发者实现更高效的数据同步策略,以达到既保证数据一致性又维持良好性能的目标。
32 0
|
2月前
|
C#
C# WPF 将第三方DLL嵌入 exe
C# WPF 将第三方DLL嵌入 exe
36 0
|
2月前
|
前端开发 C# 容器
WPF/C#:实现导航功能
WPF/C#:实现导航功能
41 0
|
2月前
|
设计模式 测试技术 C#
WPF/C#:在WPF中如何实现依赖注入
WPF/C#:在WPF中如何实现依赖注入
40 0