【发布时间】: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 应用位于同一虚拟内存空间中的参考