【问题标题】:Enumerate the VCL controls in a external application枚举外部应用程序中的 VCL 控件
【发布时间】:2010-12-09 20:05:23
【问题描述】:

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

再见。

【问题讨论】:

    标签: c++ delphi controls vcl


    【解决方案1】:

    在 Delphi 2006 之前,您可以为此使用 vcltest3.dll。但现在你必须按照 Rob Kennedy 的建议行事。

    【讨论】:

      【解决方案2】:

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

      Anders Ohlsson 不久前整理了一个 VCL Scanner applicationsource code 也可用。

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 这是一个有用的实用程序catch22.net/software/winspy,它可以让您轻松浏览从窗口/控件上的 windows API 调用返回的数据。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        相关资源
        最近更新 更多