Problem mit GetDlgItemText()
-
Hallo zusammen,
folgendes Problem habe ich:
Ich möchte ein EditFeld eines fremden ( nicht von mir erzeugten ) Dialogs auslesen und bearbeiten. Das ganze soll auf Winnt SP 6 laufen.Dazu hole ich mir mit FindWindow() den hWnd des entsprechenden Dialogs und durchlaufe dann mit EnumChildWindows() die Elements des Dialogs.
In der Callback-Funktion hole ich mir dann zuerst die ElementID des aktuellen Elements mit GetDlgCtrlID(). Das scheint auch noch zu funktionieren.Wenn ich dann allerdings GetDlgItemText() aufrufe, wird nie etwas in den Outparameter hineingeschrieben, auf wenn das "echte" Feld schon einen Wert enthält.
GetLastError liefert den Code 1421 = Control ID not found zurück.
Daher die Frage, warum liefert mir GetDlgCtrlID falsche Werte zurück, obwohl das übergebene Handle kein TopLevelElement ist?
Wenn ich das Feld ControlID im Tool Spy++ mit dem Wert den die Funktion zurückgibt vergleiche, so stimmen die IDs überein. (Im Tool als Hex Wert (Bsp 480), im Programm als Dezimalwert(1152)).
-
Steht dieser Dialog in einer eigenen Dll?
Falls ja hol dir mit "HINSTANCE LoadLibrary( LPCTSTR lpLibFileName); "die Instance der Dll und bezieh dich bei den aufrufen auf diese Instanz
Schau mal in diesen Thread, ich hatte ein ähnliches Problem als ich eine Dialogbox in eine Dll auslagerte
http://www.c-plusplus.net/forum/viewtopic.php?t=17521
-
Probier es mal mit dem Handle und WM_GETTEXT.
-
Wenn du doch schon das Handle hast: warum nicht GetWindowText
-
Er will ja den Inhalt aus einem fremden Prozess. Und was sagt das PSDK zu GetWindowText?
However, GetWindowText cannot retrieve the text of a control in another application.
-
Nich Process sondern DLL, Ich gehe davon aus das er diese Dll in seine Applikation lädt
-
Mit WM_GETTEXT sollte es dann aber, wie schon erwähnt, auf jeden Fall klappen
-
danke für die Tipps,
mit WM_GETTEXT klappts nun