如何列出应用程序的所有元素?

时间:2012-04-14 22:03:05

标签: c#

我正在尝试从其他应用程序中单击Windows应用程序上的按钮。基本上,我想从应用程序A的代码中单击应用程序B的按钮。

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

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

3 个答案:

答案 0 :(得分:2)

由于您正在查看建议(这是一个非常通用的问题,它可能会或可能不会取决于其他应用程序/窗口是什么,例如浏览器或第三方应用程序等,它是否支持自动化)

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

Accessing Elements from Other Processes

此外一篇关于如何“访问”其他应用程序的“输入”的文章 Pinvoke SetFocus to a particular control

答案 1 :(得分:2)

我没有测试过这个。但它看起来像一个有趣的图书馆。也许你可以使用一些功能。它被称为White。这只是一个样本:

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

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

答案 2 :(得分:1)

您可以使用Spy ++等工具(包含在除Express版本之外的任何Visual Studio中)来查找该按钮的名称和类,然后将这些信息用作FindWindow()的参数。