FindWindow und EmumChildwindows
-
Hi,
Ich will den Text aus einem Editfenster von einem Dialog lesen. Hab schon in diversen FAQs nachgeschaut und ich glaube/hoffe das ich das Handle schon habe, aber den Text kriege ich nicht heraus.
HWND Dialog = FindWindow(NULL, "Edit playlist entry"); if(Dialog != NULL) EnumChildWindows(PL, ChildWndProc, 0);Damit kriege ich den Dialog. Das funktioniert auch (Ich kriege Classenname und Fenstertitel)
Jetzt müsste EnumChildWIndows ja die unterfenster durchgehen. Wie erfahre ich dann, das ich aktuell bei einem Edit-Fenster bin, und wie kann ich dann den Text bekommen?
(Zur info, es handelt sich um das Fenster was kommt, wenn man bei Winamp in der Playlist rechte maustaste->Playlist Entry drückt kommt. In dem Dialog will ich den Text aus einem der Editfenster)Wäre Super wenn mir da einer Helfen könnte, ich bin echt am verzweifeln.
Danke im voraus.
-
Servus,
wenn du Spy++ hast brauchst du dir damit einfach mal das Editfeld anzugucken. Dann erfährst du den Klassennamen. Nach diesem Klassennamen suchst du dann. Sollte eigentlich funzen.

*winke*
Hellsgore
-
EnumChildWindows oder FindWindowEx.
Falls FindWindowEx: Hab ich schon probiert. Entweder ich nehm die falschen Parameter, oder es funktioniert nicht.
Bei EnumChildWindows hatte ich mal was, aber beim Text kam immer irgendwas komisches oder gar nichts. Könntest du mir vielleicht auch sagen wie man den Text da richtig herausbekommt?
-
Hi,
Bei EnumChildWindows hatte ich mal was, aber beim Text kam immer irgendwas komisches oder gar nichts. Könntest du mir vielleicht auch sagen wie man den Text da richtig herausbekommt?
wenn du das HWND auf das Control hast, bekommst du mit CWnd::FromHandle das CWnd* Objekt und kannst mit
CWnd::GetWindowTextden Inhalt auslesen (dafür gab es aber auch ne Nachricht).
So bekommst du das Handle (unsaubere Methode) (Spy++ unausweichlich):
Zuerst brauchst du das Handle auf den Dialog, das du mit FindWindow bekommst.Es sei hDialog das Handle zum Dialog und das Control das 4. Control mit dem Klassennamen "ControlClassname", dann gilt

HWND hTmp; hTmp = FindWindowEx(hDialog, NULL, "ControlClassname", NULL); // Handle zum 1. Control hTmp = FindWindowEx(hDialog, hTmp, "ControlClassname", NULL); // Handle zum 2. Control hTmp = FindWindowEx(hDialog, hTmp, "ControlClassname", NULL); // Handle zum 3. Control hTmp = FindWindowEx(hDialog, hTmp, "ControlClassname", NULL); // Handle zum 4. Control HWND hEingabeFeld = hTmp;Grüße Rapha