单击其他应用程序中的WPF按钮

时间:2017-09-03 13:47:20

标签: c# wpf

认为这将是一件容易的事,但事实证明它远非如此。 Spy ++不生成控件ID(仅显示主窗口),每个控件都有一个名称。实施例(按钮 - > “中Add按钮”) 我尝试过使用SendMessage这样的调用方法,并且我得到了主窗口句柄,但在尝试获取控制句柄时总是得到0。

我听说过UI自动化库,但没有找到任何明确的用于我的特定任务的示例。

我的目标:能够从另一个应用程序(我将使用C#)远程检索数据(例如数据网格单元文本),并单击WPF应用程序上的按钮

提前致谢!

编辑:我尝试过Ranorex Spy并且能够点击控件就好了: Press button from Ranorex

我如何模拟它?

编辑2: 我在进一步阅读一些文件后设法做到了,希望它能帮助其他人:

            string mainTitle = "";
        string controlName = "";

        AutomationElement prog = AutomationElement.RootElement.FindFirst(TreeScope.Children,
            new PropertyCondition(AutomationElement.NameProperty, mainTitle));
        AutomationElement btn = prog.FindFirst(TreeScope.Descendants,
            new PropertyCondition(AutomationElement.AutomationIdProperty, controlName));
        InvokePattern clickBtn = (InvokePattern) btn.GetCurrentPattern(InvokePattern.Pattern);

        clickBtn.Invoke();

1 个答案:

答案 0 :(得分:0)

您确实可以使用(有点)设计用于执行此类操作的UI自动化。还有一个NuGet-Package,它已经为你做了一些工作,名为TestStack.White。最初它是专为自动UI测试而设计的,但我不明白为什么你不能用它做这样的事情。您可以找到有关该软件包here的更多信息,以及有关UI自动化here的更多信息。