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

时间:2018-02-27 22:54:54

标签: windows powershell automation autohotkey ui-automation

我正在尝试为Windows 7-10上的桌面应用程序自动按钮按下。我已经能够使用AutoHotKey和PowerShell执行此操作。但是,我遇到了以下问题:

  1. 我试图点击的控件没有我可以使用的文字 隔离控件
  2. 组件的ClassNN名称不是 静态
  3. 我查看了System.Windows.Automation命名空间的MSDN文档,但文档没有提供实际示例或描述如何使用命名空间。

    问题

    如果我总是有一个窗口句柄(HWND)和一个控件的自动化ID,如何使用AutoHotKey,PowerShell(3.0+)或C#调用按钮上的按钮?

2 个答案:

答案 0 :(得分:1)

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

    InvokePattern ip;
    ip = thiselement.GetCurrentPattern(InvokePattern.Pattern) as       
    InvokePattern;
    ip.Invoke();

答案 1 :(得分:1)

假设您的窗口句柄是'handle',按钮的自动化ID是'automationId',那么您可以执行类似

的操作
AutomationElement parentWin = AutomationElement.FromHandle(handle);
Condition c1 = new PropertyCondition(AutomationElement.AutomationIdProperty, 
automationId);
AutomationElement thiselement = parentWin.FindFirst(TreeScope.Descendants, c1);    

一旦你得到按钮对象,只需调用InvokePattern。请原谅文本的突出显示