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

时间:2012-04-26 14:53:32

标签: windows object testcomplete

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

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

我希望能够做什么的例子(这是在TestComplete中完成的):

TestComplete Object Browser TestComplete Object Browser 2

1 个答案:

答案 0 :(得分:1)

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

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

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