Programación General > Visual C++
Tomar Datos De Un Control Edit En Un Exe Compilado
Eternal Idol:
En realidad debes tener otro problema ya que funciona tal y como dice la MSDN.
Usando el Spy++ busco un HANDLE de por ejemplo el Edit de una instancia del Notepad en ejecucion.
Esto da como resultado lo que comentas:
--- Código: Text --- char data[256]; GetWindowText((HWND)0x5B2378, data, sizeof(data));
Esto me devuelve el texto del Edit:
--- Código: Text --- char data[256]; SendMessage((HWND)0x5B2378, WM_GETTEXT, sizeof(data), (LPARAM)&data);
mmarrodan:
Tienes razón.
Acabo de hacer la misma prueba que tu has hecho con el notepad y efectivamente no es lo mismo utilizar GetWindowText que utilizar SendMessage con WM_GETTEXT. Actúa exactamente como decías en tu último mensaje.
Pero no lo entiendo porque yo ya había utilizado el mensaje WM_GETTEXT para acceder al programa al que intento entrar, y no había podido. !Tal vez el programa al que intento acceder no está hecho en Visual C! y funciona de modo diferente en cuanto a la mensajería. ??
Ahora no estoy en casa (y no puedo acceder al programa donde quiero entrar), pero cuando llegue esta noche volveré a intentarlo haciendo incapié en el SendMessage. Además voy a apoyarme en el programa Spy++ que indicabas en tu mensaje y que he podido bajar de la red.
Verdaderamente has sido muy amable. Tan pronto como sepa algo más te mantendré al corriente de si he podido o no acceder aunque sólo sea para agradecerte tu ayuda.
Un saludo.
Eternal Idol:
--- Cita de: "mmarrodan" ---Verdaderamente has sido muy amable. Tan pronto como sepa algo más te mantendré al corriente de si he podido o no acceder aunque sólo sea para agradecerte tu ayuda.
--- Fin de la cita ---
De nadas, ya nos contaras si sigue fallando o no B)
mmarrodan:
Lamento haber tardado en responder un poco, pero he estado un par de días de vacaciones y no he tenido internet.
Sabes que, efectivamente el tema del SendMessage funciona como dices, pero es verdad que el problema en este caso es un poco más raro (ya te contaba que lo había probado y no me había ido). El caso es que la ventana de donde yo intento sacar la información no es un "Edit" normal.
Te cuento el caso completo:
1/ Se trata de un diccionario
2/ Tú tecleas en la ventana la palabra a buscar (por ejemplo "mesa") y te aparece un campo descriptivo que te dice "Objeto habitualmente de madera, que tiene patas, varios usos..."
3/ Ese campo descriptivo es al que yo quiero acceder y no puedo.
4/ La particularidad que tiene ese control es que tú puedes pulsar doble click individualmente en cualquiera de las palabras de la descripción; es decir, encima de "Objeto" o de "habitualmente" o de "madera"... y entonces el diccionario te muestra la descripción correspondiente a la palabra donde has pulsado doble click.
---> He utilizado el Spy++ para ver si había algún puntero que direccionara al texto completo, pero no hay ninguno. Me da la impresión que este tipo de campo funciona parecido a una listbox, pero en vez de llenar palabras en una lista rellena palabras en una cadena de texto formando una frase, o un pequeño texto.
Espero no haberte aburrido con esta descripción del caso, que por otra parte, parece muy intrigante.
Un saludo.
Eternal Idol:
Bien, el punto entonces es que no es un Edit o como minimo no es un Edit sin modificacion de comportamiento (subclassing, aunque lo dudo).
Usando el Spy++ podes conseguir el nombre de la clase del control en cuestion, vas a Properties y en el tab Class esta Class Name. Tal vez saberla sea util, puede que sea un Rich Edit ...
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa