2012-03-09 110 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對象中。

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