【问题标题】:How to find button handle in a WPF application, and click it programatically?如何在 WPF 应用程序中找到按钮句柄,并以编程方式单击它?
【发布时间】:2023-03-12 19:09:02
【问题描述】:

我正在尝试以编程方式(从我自己的应用程序)按下位于另一个正在运行的 Windows (WPF) 应用程序上的按钮。

这样做,需要按钮的句柄。有很多关于如何获得这样一个句柄的帖子。

但是,WPF 应用程序似乎不为其图形组件提供句柄: https://www.experts-exchange.com/questions/25665615/Spy-or-Windows-Api-Functions-not-locating-controls-on-child-window.html

关于如何在此类应用程序中实现自动按下按钮的任何线索?

我无法控制带有按钮的应用程序的源代码。

【问题讨论】:

  • 您很可能需要将自己注入应用程序并在主窗口中获取参考。然后根据类型递归查询子项。不会是一件容易的事
  • 我可以通过FindWindow函数获取窗口句柄,没问题。
  • 如果您有 VS Enterprise,您可以查看 Coded UI 测试功能,也许这会有所帮助。它能够在应用程序中找到按钮,然后自动按下它们,所以也许你可以自己重现这种自动化。不过,只是一种预感。
  • @Totte Karlsson 通过 AutomationElement 获得 hWnd -> AutomationElement.FromHandle: AutomationElement Class。那就看LogicalTreeHelper Class
  • 我的意思是您的应用与 WPF 应用位于同一虚拟内存空间中的参考

标签: c# wpf


【解决方案1】:

【讨论】:

  • 我无法控制带有按钮的应用程序的源代码。
  • 我了解到您没有来源。 UI 自动化从桌面开始,允许您查看当前运行的程序的层次结构。也许看看codeproject.com/Articles/33049/WPF-UI-Automation 以获得不同的描述。
猜你喜欢
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多