本文介绍: 【代码】C# 利用 UI 自动化框架与应用程序的用户界面进行交互来模拟点击按钮。
前提工作:
①需要引入命名空间:using System.Windows.Automation;
②添加两个引用:UIAutomationClient、UIAutomationTypes
using System.Windows.Automation; private static void AutoClickLoginButton() { //进程名称 可替换为你程序的进程 string appName = "FR"; Process[] myProcesses = Process.GetProcessesByName(appName); if (myProcesses.Length > 0) // 如果程序已经启动 { Process targetProcess = myProcesses[0]; AutomationElement rootElement = AutomationElement.FromHandle(targetProcess.MainWindowHandle); AutomationElement loginButton = FindLoginButton(rootElement); if (loginButton != null) { // 使用 InvokePattern 模拟点击登录按钮 InvokePattern invokePattern = loginButton.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern; invokePattern.Invoke(); } } } private static AutomationElement FindLoginButton(AutomationElement element) { // 查找子元素 查找子窗体下的按钮的名称 根据实际情况修改 AutomationElement loginButton = element.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "登录")); if (loginButton != null) { return loginButton; } // 递归查找子元素 AutomationElementCollection children = element.FindAll(TreeScope.Children, Condition.TrueCondition); foreach (AutomationElement child in children) { loginButton = FindLoginButton(child); if (loginButton != null) { return loginButton; } } return null; }
实现原理:
当程序已经启动时,AutoClickLoginButton
方法会寻找名为”FR”的应用程序进程。然后,它使用 AutomationElement.FromHandle
从该进程的主窗口句柄获取根元素。
接着,FindLoginButton
方法被调用,该方法在根元素及其子元素中递归查找名为”登录”的登录按钮。
如果找到登录按钮,代码会使用 InvokePattern
模拟点击登录按钮。InvokePattern.Invoke()
方法会模拟用户点击按钮的动作。
整体来说,这段代码利用 UI 自动化框架与应用程序的用户界面进行交互。它通过搜索应用程序的界面层级结构来定位登录按钮,并模拟点击操作。
原文地址:https://blog.csdn.net/qq_64948696/article/details/135522161
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_56264.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。