2017-09-03 95 views
1

认为这将是一件容易的事情,但事实证明它远非如此。 Spy ++不生成控件ID(仅显示主窗口),每个控件都有一个名称。示例(Button - >“AddButton”) 我试过使用调用的方法,如SendMessage,并且我得到主窗口句柄就好了,但试图获取控制句柄时总是得到0。点击另一个应用程序的WPF按钮

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

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

提前感谢!

编辑:我已经试过Ranorex间谍,并能点击控制得很好: 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(); 
+0

你想从哪个应用程序获取数据? –

+0

只是一些WPF应用程序,我需要给出具体的应用程序名称吗? – TricksterJoe

+0

你的帖子没有多大意义?为什么你有两个wpf应用程序,你为什么要共享它们之间的数据和事件? –

回答

0

事实上,你可以使用UI自动化这是(有点)专做这种东东。还有一个NuGet包,它已经为你做了一些工作,叫做TestStack.White。最初它是为自动化UI测试而设计的,但我不明白为什么你不能用它来做这样的事情。您可以了解有关包here的更多信息,以及有关UI自动化here的更多信息。

+0

将采取肯定的看,现在我想弄清楚如何得到一个datagrid行单元格 – TricksterJoe

相关问题