3

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

再见。

4

3 回答 3

7

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

可以使用EnumChildWindows来获取窗口控件的句柄。您可以查看它们的类名以确定它们来自“TButton”还是“TStringGrid”,但即便如此,您也无法访问任何与对象相关的工具。您将没有对象引用,因此您无法读取任何属性或调用任何方法。

来自自动化 QA 的TestComplete提供从外部程序访问程序表单和类的权限,这听起来像是您可能正在尝试做的事情。它的工作原理是在 Delphi 程序中包含一个单元,该单元本质上为 TestComplete 程序提供了一个后门,用于查询程序的内部结构。这需要应用程序开发人员的合作;您不能在任意程序上使用 TestComplete。

于 2009-10-25T02:39:44.167 回答
0

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

Anders Ohlsson 不久前组装了一个VCL Scanner 应用程序,它就是这样做的。源代码也可用。

于 2009-10-26T04:25:36.533 回答
0

直到 Delphi 2006,您可以为此使用vcltest3.dll。但现在你必须按照罗布·肯尼迪的建议走。

于 2009-10-26T16:19:39.467 回答