1

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

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

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

TestComplete 对象浏览器 TestComplete 对象浏览器 2

4

1 回答 1

1

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

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

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

于 2012-04-26T18:38:00.077 回答