VBA通过使用enumchildwindows列举

我正在尝试创build一个与我们的外部应用程序之一进行通信的Excel文档。

我有一个sendmessage为了WM_GETTEXT从一个特定的窗口,但是我不能到达下一个子窗口,因为类名称都是一样的:

在这里输入图像说明

我的第一个代码抓取名为“WindowsForms10.EDIT.app.0.2004eee”的父窗口下的第一个类的文本

Grange = FindWindow(vbNullString, "General Account Enquiry") Account_number = FindWindowEx(Grange, 0&, "WindowsForms10.EDIT.app.0.2004eee", vbNullString) the_count = SendMessage(Account_number, WM_GETTEXTLENGTH, 0&, 0&) Buffer$ = Space$(the_count) Call SendMessageByString(Account_number, WM_GETTEXT, the_count + 1, Buffer$) 

但是我也需要从红圈框中获取相同类名的文本。 我只有在类名称是唯一的API调用的经验。

我已经被一个非常有用的stackoverflow贡献者告诉使用enumchildwindows循环其他5个同名的子窗口,但几天后,我无法find正确的代码来做到这一点。

任何人都可以帮助或提供一个我可以使用的示例代码?

非常感谢你

看起来我设法找出发布后约5分钟,

Grange = FindWindow(vbNullString,“一般账户查询”)

 Account_number = FindWindowEx(Grange, 0&, "WindowsForms10.EDIT.app.0.2004eee", vbNullString) Account_number2 = FindWindowEx(Grange, Account_number, "WindowsForms10.EDIT.app.0.2004eee", vbNullString) Account_number3 = FindWindowEx(Grange, Account_number2, "WindowsForms10.EDIT.app.0.2004eee", vbNullString) Account_number4 = FindWindowEx(Grange, Account_number3, "WindowsForms10.EDIT.app.0.2004eee", vbNullString) Account_number5 = FindWindowEx(Grange, Account_number4, "WindowsForms10.EDIT.app.0.2004eee", vbNullString) Account_number6 = FindWindowEx(Grange, Account_number5, "WindowsForms10.EDIT.app.0.2004eee", vbNullString) Account_number7 = FindWindowEx(Grange, Account_number6, "WindowsForms10.EDIT.app.0.2004eee", vbNullString) the_count = SendMessage(Account_number6, WM_GETTEXTLENGTH, 0&, 0&) Buffer$ = Space$(the_count) Call SendMessageByString(Account_number6, WM_GETTEXT, the_count + 1, Buffer$) ThisWorkbook.Sheets("Sheet1").Range("A2") = Buffer$