Xion - Do 14.08.08 11:49
Titel: FindWindowEx mit mehreren (identischen) Panels
Hi,
über den Winspector lasse ich mir den Aufbau einer andren Anwendung zeigen. Leider gibt es für mich an einer Stelle ein Problem:
auf einer Form sind 3 Panels, alle ohne Namen und als Klasse TPanel.
Auf einem dieser Panels ist ein Button und auf einem andren sind 2 Edits die ich ansprechen möchte (bei den Edits ist das Problem ähnlich, woher kriege ich raus, welches Edit welches ist?)
Ich habe es mit einem mehrmaligen Aufruf von FindWindowEx versucht, aber es funktioniert nicht. hB ist immer das gleiche Handle.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| while (hbtn<>0) or(hA<>0) do begin hB:=FindWindowEx(h, 0, 'TPanel', nil); if hBtn=0 then hBtn:=FindWindowEx(h, 0, 'TButton', 'Herunterladen && Konvertieren'); if hA=0 then begin hA:=FindWindowEx(hB,0,'TEdit',nil); hB:=FindWindowEx(hB,0,'TEdit',nil); end; end; |
h=Handle der Form
hB ist in diesem Fall immer identisch, obwohl es 3 Panels gibt.
Kann mir da jemand weiterhelfen?
Danke im Vorraus,
Xion
SvenAbeln - Do 14.08.08 12:17
| Zitat: |
Delphi-Quelltext 1:
| hB:=FindWindowEx(h, 0, 'TPanel', nil); |
hB ist in diesem Fall immer identisch, obwohl es 3 Panels gibt.
|
Du suchst mit FindWindowEx immer nach dem ersten TPanel in dem Fenster, daher bekommst du immer wieder das identische Ergebnis. Über den zweiten Parameter kannst du aber angeben, nach welchem Handle er mit der Suche beginnen soll.
Delphi-Quelltext
1: 2: 3:
| hPanel1:=FindWindowEx(h, 0, 'TPanel', nil); hPanel2:=FindWindowEx(h, hPanel1, 'TPanel', nil); hPanel3:=FindWindowEx(h, hPanel2, 'TPanel', nil); |