2017-08-18 1 views
0

Ich versuche, ein Excel-Dokument zu erstellen, dass die Kommunikation mit einer unserer externen Anwendungen.VBA enumerieren durch Verwendung von enumchildwindows

Ich habe Sendmessage die gut arbeiten, um WM_GETTEXT von einem bestimmten Fenster, aber ich nicht auf die nächste Child bekommen können als die Klassennamen alle sind die gleichen:

enter image description here

Mein erster Code Greifern der Text von der ersten Klasse unter dem Parent Namen „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$) 

Aber ich muss auch den Text aus dem eingekreisten roten Kasten packen, die die gleiche Klasse Namen hat. Ich habe nur Erfahrung mit API-Aufrufen, wo die Klassennamen eindeutig sind.

Ich wurde von einem sehr hilfreichen stackoverflow-Mitwirkenden informiert, enumchildwindows zu verwenden, um durch die 5 anderen Kindfenster mit dem gleichen Namen zu fahren, aber nach ein paar Tagen Suche konnte ich den richtigen Code nicht finden Dies.

Kann jemand helfen oder einen Beispielcode zur Verfügung stellen, mit dem ich arbeiten kann?

Vielen Dank

Antwort

1

aussieht wie ich es aus ca. 5 Minuten nach der Einlieferung dies,

Grange = Findwindow (vbNullString, "Allgemeines Konto Inquiry")

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$ 
+0

Figur es geschaffen wäre hilfreich, wenn Sie die Deklarationen Ihrer API-Funktionen enthalten. – WizzleWuzzle

Verwandte Themen