【问题标题】:How to list all the elements of an application?如何列出应用程序的所有元素?
【发布时间】:2012-04-15 06:35:47
【问题描述】:

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

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

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

【问题讨论】:

  • @Arion // 目前还没有。我试图谷歌,什么都没有。我知道这个问题可能不适合这里,因为我没有任何源代码,但是......我不知道如何解决这个问题。任何建议将不胜感激..

标签: c#


【解决方案1】:

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

看看这个密切相关的答案(它可能是重复的,但你仍然在“寻找”,所以也许要注意)。

Accessing Elements from Other Processes

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

【讨论】:

  • NSGaga // 谢谢你的帖子!
  • @Moon np - 你最好的选择是使用UI Automation。或可访问性(它的旧版本),仍然没有任何保证。
【解决方案2】:

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

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

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

【讨论】:

  • 当然可以,不过应该进行一些测试
【解决方案3】:

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

【讨论】:

  • 太棒了! Spy++ 似乎很有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
  • 1970-01-01
  • 2020-04-26
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多