Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Capturar Texto de una ventana especifica (https://www.clubdelphi.com/foros/showthread.php?t=38908)

albertoP 04-01-2007 01:54:50

Capturar Texto de una ventana especifica
 
Hola

Estoy intentando copiar el texto una ventana que yo escoja por ejemplo la de Internet Explorer.

Código:

procedure TForm1.Button1Click(Sender: TObject);
var mango:THandle;
buffer:PChar;
i:Integer;
begin

//Obteniendo el Handle de la ventana
mango:=FindWindow('IEFrame',nil);

if mango <> 0 then
begin

showMessage('ok');
i:=sendmessage(mango,WM_GETTEXTLENGTH,0,200);
form1.Memo1.Lines.Add(string(buffer));

end
else
begin

showMessage('no');

end;

No he logrado capturar ningun texto de la ventana, espero que me puedan ayudar desde ya muchas gracias..

seoane 04-01-2007 02:10:51

:eek: ¿que intentas hacer?

Analicemos tu código:
Código Delphi [-]
var 
  mango:THandle;
  buffer:PChar;
  i:Integer;
begin
  // Por ahora vamos bien, obtenemos el handle de una ventana del explorer
  mango:= FindWindow('IEFrame',nil); 
  if mango <> 0 then
  begin
    // Mostramos "OK" si obtenemos el handle de un ventana del explorer
    ShowMessage('ok');
    // Aqui intentas obtener la longitud del titulo de la ventana, 
    // pero el parametro 200 no se para que lo usas (segun la documentacion debe ser siempre 0)
    i:=sendmessage(mango,WM_GETTEXTLENGTH,0,200);
   // Aqui añades algo a un memo, pero ¿que tienes en la variable buffer?
    form1.Memo1.Lines.Add(string(buffer));
  end else
  begin    
    ShowMessage('no');
end;

:confused: No entiendo lo que quieres conseguir. Aunque el código que utilizas me recuerda a este otro hilo. ¿Lo sacaste de ahi?

albertoP 04-01-2007 02:24:15

Capturar los campos de usuario y password
 
Hola Seoane muchas gracias y Felicidades, me ha dado la curiosidad por saber como puedo obtener textos de componentes de otras ventanas.

Saludos

seoane 04-01-2007 02:32:01

¿Has visto este hilo?

http://www.clubdelphi.com/foros/show...22&postcount=4

albertoP 04-01-2007 08:00:18

Uhhh
 
Seoane ya resolvi el problemita ahora me pasa lo siguiente: cuando el internet explorer va a navegar me pide usuario y password entonces automaticamente le envio el mensaje para obtener los textos pero me devuelve solo el usuario el password no.

Es posible tambien obtener el password mediante alguna API o hay que hacerlo de otra manera...?

Otra pregunta

Supongamos que:

Una ventana tiene el siguiente titulo '
Yahoo: Bandeja de Entrada' y yo quiero buscar la palabra clave Yahoo y si la contiene entonces hago la operacion que desee?

mango:=FindWindow(nil,'Yahoo: Bandeja de Entrada');

Saludos y desde ya muchas gracias

ArdiIIa 04-01-2007 08:35:12

Password
 
Como normal general, Windows NO PERMITE obtener el texto de los TEdit de otras ventana que no pertenecen a la aplicación, cuando mucho menos de un Edit tipo passwd....

En fin, no se si tus intenciones son honestas, pero en todo caso puedes echar un vistazo a un programilla que hice hace algún tiempo (no es spam, o eso creo) y este si te da paswwords y todo lo que se teclee..:eek:
Ya me dirás algo...

Saludos

P.D. Lo que comenta Seoane
Cita:

sendmessage(handle,WM_GETTEXT,l+1,lParam(buffer));
ya te digo de entrada que no sirve para obtener el texto de los Edits de otras aplicaciones.

seoane 04-01-2007 12:51:29

Cita:

Empezado por ArdiIIa
P.D. Lo que comenta Seoane ya te digo de entrada que no sirve para obtener el texto de los Edits de otras aplicaciones.

:eek: ¿Lo probaste? Porque decir que algo no funciona, sin haberlo probado antes ...

Es verdad que la función GetWindowsText solo funciona con los controles de tu propia aplicación, pero no así el mensaje WM_GETTEXT, que funciona perfectamente con los controles de otras aplicaciones. Pero por favor Ardilla, no me creas a mi, pruebalo por ti mismo ....

En cuanto a lo de leer passwords de otra aplicación, puedes hecharle un vistazo a este código, donde convierto todos los password en edits normales.

http://www.clubdelphi.com/foros/show...16&postcount=2

Ahora piensa tu como juntar ambos códigos para obtener lo que tu quieres. Yo no pienso ayudarte mas si lo que quieres es "robar" contraseñas, si es ese tu caso lo mejor es que sigas el consejo de Ardilla e instales un keylogger.

En cuanto a lo de buscar una ventana del explorer con un texto especifico, usa la función buscar que ese tema también se trato aquí, y yo ya me canse de buscar por ti ... :p

ArdiIIa 04-01-2007 15:22:08

Glup...:mad:

Cita:

Empezado por seoane
:eek: ¿Lo probaste? Porque decir que algo no funciona, sin haberlo probado antes ...

Es verdad que la función GetWindowsText solo funciona con los controles de tu propia aplicación, pero no así el mensaje WM_GETTEXT, que funciona perfectamente con los controles de otras aplicaciones. Pero por favor Ardilla, no me creas a mi, pruebalo por ti mismo ....


Hasta el fondo.... Lo siento y te pido disculpas Seoane, me ofusqué con GetWindowText: This function cannot retrieve the text of an edit control in another application..
Lo cierto y verdad es que hace algunos meses estuve haciendo pruebas con un programa al que por desgracia tengo que suministrarle muchos datos reduntantes a diario y tenía la intención de darle esos datos de forma automática, pero para ello, también tenía que obtener algunos valores asignados en diferentes controles, y mira por donde me dió todo tipo de dificultades. Ahora no puedo decirte como solventé la situación porque el código lo tengo en el trabajo, pero en cuanto pueda lo examinaré y por supuesto, tu código funciona de primera.
Un saludo.

albertoP 10-01-2007 22:06:29

Muchas Gracias
 
Hola Seoane a pesar de que pienses que quiero robar constraseñas te estoy muy agradecido por haber contestado..."muchas gracias" al igual que a ti Ardilla.

Ah Seone sabes que solo tengo acceso a esta página , la de Adobe y Microsoft; Pero es muy facil pensar el muchacho es un vago que no quiere buscar y estas equivocado. Algunos tenemos restricciones de navegacion pero bueno tu no eres adivino para saberlo.

De todas formas muchas gracias.

roman 10-01-2007 22:43:55

Cita:

Empezado por albertoP
pero bueno tu no eres adivino para saberlo.

En efecto, no es adivino, así que ¿para qué presuponer que todos saben cual es tu situación particular en lugar de comentarla de antemano? Pero, por otro lado, cuando seoane te comentó que usaras la función de búsqueda, se refería a la de estos mismo foros, a los cuales, según mencionas, sí tienes acceso.

// Saludos


La franja horaria es GMT +2. Ahora son las 07:34:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi