枚举外部应用程序中的VCL控件

时间:2009-10-25 02:08:42

标签: c++ delphi controls vcl

可以通过Windows API枚举和迭代属于用C ++ Builder或Delphi编写的外部Win32应用程序的窗体(TForm)上的VCL控件。

再见。

3 个答案:

答案 0 :(得分:7)

没有。首先,请考虑Windows API不知道“VCL”是什么。它不知道“TButton”或“TStringGrid”,它当然不知道“TImage”或“TLabel”,它们甚至没有窗口句柄。

可以使用EnumChildWindows来获取窗口控件的句柄。您可以look at their class names确定它们来自“TButton”或“TStringGrid”,但即便如此,您也无法访问任何与对象相关的设施。您将没有对象引用,因此您无法读取任何属性或调用任何方法。

来自Automated QA的

TestComplete可以从外部程序访问程序的表单和类,这听起来像您可能尝试的那样。它通过在Delphi程序中包含一个单元来工作,该单元实际上为TestComplete程序提供了一个后门,用于查询程序的内部。这需要应用程序开发人员的合作;你不能在任意程序上使用TestComplete。

答案 1 :(得分:0)

您可以查看DFM,它们作为资源存储在可执行文件中。

安德斯·奥尔森(Anders Ohlsson)将一段VCL Scanner application放在一起。 source code也可用。

答案 2 :(得分:0)

在Delphi 2006之前,您可以使用vcltest3.dll。但现在你必须采用Rob Kennedy提出的方式。