Programación General > Visual C++
Tomar Datos De Un Control Edit En Un Exe Compilado
mmarrodan:
Agradecería muchísimo si alguien pudiera echarme una mano con este tema con el que llevo muchos días.
Descripción
-------------
Si utilizo la función EnumWindows puedo averíguar los manejadores de los programas abiertos en Windows, y si utilizo EnumChildWindows puedo averiguar los distintos manejadores de los controles de una ventana.
Pregunta
-----------
Al utilizar la macro Edit_GetText(hWnd, szBuffer) utilizando el manejador que hemos obtenido mediante EnumChildWindow, Windows no devuelve ninguna información. ¿Hay algún modo de obtener la información que hay en un control EDIT, desde un programa que ya está compilado?
Verdaderamente agradecería mucho cualquier información.
Gracias y un saludo.
Eternal Idol:
Podes enviar el mensaje WM_GETTEXT al control.
mmarrodan:
En realidad enviar un mensaje WM_GETTEXT es lo mismo que llamar a Edit_GetText o a GetWindowText.
Windows no retorna nada.
Eternal Idol:
--- Cita de: "mmarrodan" ---En realidad enviar un mensaje WM_GETTEXT es lo mismo que llamar a Edit_GetText o a GetWindowText.
Windows no retorna nada.
--- Fin de la cita ---
No es lo mismo si estamos hablando de una ventana de otro proceso.
Fuente GetWindowText:
If the target window is owned by the current process, GetWindowText causes a WM_GETTEXT message to be sent to the specified window or control. If the target window is owned by another process and has a caption, GetWindowText retrieves the window caption text. If the window does not have a caption, the return value is a null string. This behavior is by design. It allows applications to call GetWindowText without becoming unresponsive if the process that owns the target window is not responding. However, if the target window is not responding and it belongs to the calling application, GetWindowText will cause the calling application to become unresponsive.
mmarrodan:
Efectivamente tienes razón,
Tal vez el proceso esté descrito como diferente en la ayuda sin embargo, una vez que he conseguido el manejador, puedo hacer cualquiera de las 3 cosas, llamar a:
Llamar a la macro Edit_GetText
Llamar a la función GetWindowText
Utilizar SendMessage para enviar un WM_GETTEXT
Windows siempre retorna, efectivamente, la window caption text, y no la window text. La cosa está en que, incluso un control edit tiene una zona de caption y una zona de datos. Cuando el programa es nuestro y lo estamos haciendo, al llamar a Edit_GetText Windows nos da los datos, sin embargo si el programa ya está compilado, Windows sólo nos da la caption del control edit.
*** Sin embargo es curioso que los campos "static" no se comportan igual; es decir, si llamas a la misma función GetWindowText preguntanto por la información que hay en un control estático... SÍ te devuelve el texto que tiene ese control (incluso si el programa ya está compilado).
La cuestión sigue siendo por tanto, si hay algún modo de acceder al WINDOW TEXT de un campo edit, y no al WINDOW CAPTION TEXT de un edit.
Muchas gracias por tu interés y ayuda.
Navegación
[#] Página Siguiente
Ir a la versión completa