运行时应用程序对象浏览和操作

问题描述 投票:0回答:1

我需要做一个对象浏览器/操纵器,类似于 TestComplete 中可用的浏览器/操纵器,即列出任何正在运行的外部应用程序中的所有对象及其属性,并能够更改它们的属性,所有这些都在运行时期间进行当然。
虽然 MSAA/IAccessible 可以读取对象,但据我所知,它只能返回可见对象,而不能更改其属性。
使用 WinAPI,我无法读取没有句柄的对象,例如标签。

理想情况下,我希望在 Delphi 中完成此操作,但任何其他语言建议都是可以接受的。

我想要做的事情的示例(这是在 TestComplete 中完成的):

TestComplete Object Browser TestComplete Object Browser 2

windows object testcomplete
1个回答
1
投票

这项任务并不容易。如果您想做到这一点,您需要使用特定的方法来获取您想要使用的每个应用程序框架(.NET、MFC、VCL 等)的数据。虽然其中一些方法非常简单(例如 .NET 和 Java 的反射),但其他一些方法可能更复杂并且没有像 VCL 那样进行记录。 TestComplete 将其自己的挂钩加载到目标进程内存中,并通过这些模块检索有关此应用程序的信息。

此外,据我所知,TestComplete 可以读取被测试应用程序的各种类型的调试信息,并在公开对象及其成员时使用它。

使用 IAccessible 和 Win API 是一种更简单的方法,尽管在某些情况下不太有效。您提到您无法使用 Win API 从标签中获取任何信息。发生这种情况是因为 VCL 应用程序中的 TLabel 对象不是窗口对象。

© www.soinside.com 2019 - 2024. All rights reserved.