【问题标题】:Geting an instance of Windows Control (dialog window) by its handle通过句柄获取 Windows 控件(对话框窗口)的实例
【发布时间】:2012-03-09 13:18:42
【问题描述】:

我在 delphi 中调用了一些对话框窗口。我正在尝试参考它,但遇到问题。这些控件不是 VCL,所以我不能使用 FindWindow(handle): TWinControl

是否有返回正确窗口控制的方法?

我可以从对话框窗口信息中收集到任何机会吗,例如:

*对话框窗口上的控件数 *对话框窗口中控件的名称、文本、类名

【问题讨论】:

  • 您无法从该窗口句柄中获得TWinControl 或任何VCL 实例。您可以调用EnumChildWindows 来枚举顶级对话窗口的子级。然后你可以查询他们的类名等等。您需要的主要 Win32 API 是 GetClassNameGetWindowText
  • 你需要写@EnumChildProc,因为Windows.pas将枚举过程定义为无类型Pointer!我个人会定义我自己的import,它有一个类型化的回调过程,以确保我做对了。
  • 您应该将其发布为答案伙伴,这将在我的事业中发挥作用。再次感谢
  • 你是在建议我发布答案吗?我不会那样做,因为 Rob 的回答和我的 cmets 说的一样,只是有点扩展。

标签: delphi handle


【解决方案1】:

如果真的没有代表对话框的 VCL 控件,那么您就不能无中生有地制造一个。 VCL 控件为其相应的 Windows 控件创建并承担责任,但如果 Windows 控件已经存在,则无法将它们“包装”到新的 VCL 对象中。

您只需直接对窗口句柄进行操作即可。您可以使用它们来收集您想要的任何信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多