可以通过Windows API枚举和迭代属于用C ++ Builder或Delphi编写的外部Win32应用程序的窗体(TForm)上的VCL控件。
再见。
答案 0 :(得分:7)
没有。首先,请考虑Windows API不知道“VCL”是什么。它不知道“TButton”或“TStringGrid”,它当然不知道“TImage”或“TLabel”,它们甚至没有窗口句柄。
你可以使用EnumChildWindows
来获取窗口控件的句柄。您可以look at their class names确定它们来自“TButton”或“TStringGrid”,但即便如此,您也无法访问任何与对象相关的设施。您将没有对象引用,因此您无法读取任何属性或调用任何方法。
TestComplete可以从外部程序访问程序的表单和类,这听起来像您可能尝试的那样。它通过在Delphi程序中包含一个单元来工作,该单元实际上为TestComplete程序提供了一个后门,用于查询程序的内部。这需要应用程序开发人员的合作;你不能在任意程序上使用TestComplete。
答案 1 :(得分:0)
您可以查看DFM,它们作为资源存储在可执行文件中。
安德斯·奥尔森(Anders Ohlsson)将一段VCL Scanner application放在一起。 source code也可用。
答案 2 :(得分:0)
在Delphi 2006之前,您可以使用vcltest3.dll。但现在你必须采用Rob Kennedy提出的方式。