首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当已知HWND和控制自动化ID时,从外部应用程序调用桌面应用程序中的按钮

当已知HWND和控制自动化ID时,从外部应用程序调用桌面应用程序中的按钮
EN

Stack Overflow用户
提问于 2018-02-27 22:54:53
回答 2查看 564关注 0票数 0

我正试图在Windows7-10上自动按下桌面应用程序的按钮,我已经能够使用AutoHotKey和PowerShell实现这一点。然而,我有以下问题:

  1. 正在尝试单击的控件没有可用于隔离控件的文本。
  2. 组件的ClassNN名称不是静态的。

我已经查看了System.Windows.Automation命名空间的MSDN文档,但是这些文档没有提供实际的示例,也没有描述如何使用名称空间。

问题

如果控件始终具有窗口句柄(HWND)和自动化ID,如何使用AutoHotKey、PowerShell(3.0+)或C#调用控件上的按钮按下?

EN

回答 2

Stack Overflow用户

发布于 2018-02-28 08:32:26

您可以使用C#和System.Windows.Automation来完成它。首先,将您的控件作为一个AutomationElement (让我们称之为这个元素)。然后您可以调用InvokePattern来执行单击操作。

代码语言:javascript
复制
    InvokePattern ip;
    ip = thiselement.GetCurrentPattern(InvokePattern.Pattern) as       
    InvokePattern;
    ip.Invoke();
票数 1
EN

Stack Overflow用户

发布于 2018-03-02 01:47:22

假设您的窗口句柄是‘句柄’,而按钮的自动化id是'automationId‘,那么您可以执行以下操作

代码语言:javascript
复制
AutomationElement parentWin = AutomationElement.FromHandle(handle);
Condition c1 = new PropertyCondition(AutomationElement.AutomationIdProperty, 
automationId);
AutomationElement thiselement = parentWin.FindFirst(TreeScope.Descendants, c1);    

获得按钮对象后,只需调用InvokePattern .Please就可以原谅文本的格式化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49019279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档