2012-04-14 15 views
0

我试图从其他应用程序单击Windows应用程序上的按钮。基本上,我想从应用程序A的代码中点击应用程序B的按钮。如何列出应用程序的所有元素?

我可以使用winapi findWindow来获取处理程序。问题是我不知道应用程序B上的按钮名称。是否可以列出应用程序的所有名称或ID?

我正在使用c#来实现它。

+0

@Arion //目前为止没有。我试图谷歌,一无所获。我知道这个问题可能不适合这里,因为我没有任何源代码,但是...我不知道如何解决这个问题。任何建议,将不胜感激.. – Moon 2012-04-14 22:10:05

回答

2

因为你在看建议(这真的是一个非常普遍的问题,它可能或可能不工作取决于其他应用程序/窗口是什么,它是例如浏览器或第三方应用程序等,它是否支持自动化)

看看这个密切相关的答案(它可能是重复的,但你有点'寻找'仍然可能注意到)。

Accessing Elements from Other Processes

而且这一项就如何 '访问' 其他应用程序的 '输入'
Pinvoke SetFocus to a particular control

+0

NSGaga //谢谢你的帖子! – Moon 2012-04-14 22:15:16

+0

@Moon np - 你最好的选择是使用[UI Automation](http://msdn.microsoft.com/en-us/library/ms747327.aspx)。或可访问性(旧版本),仍然没有保证。 – NSGaga 2012-04-14 22:16:37

2

我没有测试过这一点。但它看起来像一个充满魅力的库房。也许有一些功能可以使用。它被称为White。这仅仅是一个例子:

Application application = Application.Launch("foo.exe"); 
Window window = application.GetWindow("bar", InitializeOption.NoCache); 

Button button = window.Get<Button>("save"); 
button.Click(); 
+0

肯定呢,虽然应该给一些测试 – NSGaga 2012-04-14 22:23:21

1

您可以使用工具,如间谍++(包含在任何Visual Studio除了速成版),以查找姓名和类按钮,然后使用这些信息作为FindWindow函数的参数()。

+0

太棒了! Spy ++似乎非常有用 – Moon 2012-04-14 23:13:33

相关问题