2012-03-09 43 views
1

我在delphi中调用了一些对话框窗口。我试图得到它的参考,bu遇到问题。这些控件不是VCL,所以我不能使用FindWindow(句柄):TWinControl通过其句柄获取Windows控件的实例(对话框窗口)

是否有方法返回适当的窗口控制?

是否有任何蔡斯那我就可以从类似的对话窗口信息收集:

*对对话窗口 控制数*名称,文本,在对话框窗口的控件类名

+1

您无法从此窗口句柄中获取TWinControl或实际上任何VCL实例。您可以调用'EnumChildWindows'来枚举顶层对话窗口的子项。然后你可以查询他们的类名等等。你需要的主要Win32 API是'GetClassName'和'GetWindowText'。 – 2012-03-09 13:25:25

+0

您需要编写'@ EnumChildProc'因为Windows.pas将enum proc定义为无类型的'指针'!我个人会定义我自己的'import',它有一个类型化的回调过程,以确保我的理解正确。 – 2012-03-09 13:56:34

+0

你应该把它作为一个答案配对发布,这将在我的事业。再次感谢 – 2012-03-09 14:06:17

回答

2

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

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