![]() |
Problem mit EnumWindows
Hi, ich bin dabei etwas zu automatisieren, und das geht leider nich anders als mit Suchen von Fenstern und Senden von (Click) Botschaften.
Ich suche nach den Fenstern mit FindWindow, und sobald ich das entsprechende Fenster gefunden habe, suche ich mit EnumChildWindows die Komponenten durch um das jeweilge Control zum Clicken zu finden. Bei 2 Fenstern á 1 Button funktioniert diese Suche tadellos. Das 3te Fenster wird auch noch gefunden bloß gibt es ein problem mit EnumChildWindows. Er geht noch in die Zeile mit EnumChildWindows, springt aber nicht in EnumChildProc. Das ParentHnd nicht stimmt kann wohl nicht sein da ich es ziemlich eindeutig über Caption und Fensterklassenname ermitteln kann. Das im Hintergrund ein Fenster existiert mit der gleichen Caption/Fensterklasse ist wohl sehr unwahrscheinlich. Ich dacht alternativ schon an GetDlgItem, das Problem ist das laut WinSpy die ControlID des Buttons seinem Handle entspricht was wohl falsch ist. Der Aufruf schaut so aus, und funktioniert wie gesagt 2x reibungslos :)
Delphi-Quellcode:
EnumChildWindows(ParentHnd, @EnumChildProc, LongInt(BtnCaptionE));
|
Re: Problem mit EnumWindows
Moin RuX,
und wie sieht die EnumChildProc aus? |
Re: Problem mit EnumWindows
so:
Delphi-Quellcode:
aber wie gesagt er springt gar nicht erst rein bei der 3ten suche :/
function EnumChildProc(Wnd: hWnd; SearchStr: String): BOOL; stdcall;
var buffer: array[0..MAX_PATH] of char; //caption von button begin result := Wnd <> 0; if result then begin SendMessage(wnd, WM_GETTEXT, sizeof(buffer), Integer(@buffer)); if buffer = SearchStr then begin PostMessage(wnd, BM_CLICK, 0, 0); exit; end; EnumChildWindows(wnd, @EnumChildproc, Integer(SearchStr)); end; end; |
Re: Problem mit EnumWindows
:gruebel: hab jetzt ne lösung mit GetWindow die zu funktionieren scheint, allerdings schon sehr seltsam wieso das andere nich geht
|
Re: Problem mit EnumWindows
Hi,
vielleicht habe ich ja gerade mein Mittagstief, aber bei dem rekursiven Aufruf vermisse ich die Übermittlung von SearchStr... Grüße vom marabu |
Re: Problem mit EnumWindows
sehr aufmerksam von dir.
hab ich beim schönmachen des codes für dp, aus versehn falsch hingemacht, is aber bei mir richtig :) insofern leider kein fehler :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz