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 otras ventanas (https://www.clubdelphi.com/foros/showthread.php?t=7775)

NeWsP 26-02-2004 11:13:44

Capturar texto de otras ventanas
 
Buenos dias :)

tengo un pregunta un poco rara ... ( en mi linea jejejjee )

no se si se puede hacer, supongo q si.

Imaginaos una ventana de otro programa q tiene de titulo "manue" y el contenido de la ventana , es una linea de texto q pone "hola"

Hay alguna forma de capturar ese "hola" ???

lo unico q consigo es capturar el titulo de la ventana ("manue") con el GetWindowText

Espero q me podais ayudar

Muchas gracias por adelantado

Gydba 26-02-2004 13:13:32

En teoría conociendo el handle del control y mediante la función GetWindowText podés obtener lo que buscas.
Fijate en Planet-Source-Code.com que hay ejemplos en VB que pueden ser adaptados y que tratan de inspectores de ventanas.

roman 26-02-2004 16:14:35

Cita:

Empezado por NeWsP
Hay alguna forma de capturar ese "hola" ???

lo unico q consigo es capturar el titulo de la ventana ("manue") con el GetWindowText


Como te indica Gydba debes obtener el "handle" del control que contiene el texto. Esto lo puedes hacer utilizando la función FindWindowEx de la API de Windows que te permite recorrer los controles que haya en la ventana principal.

// Saludos

seoane 27-02-2004 00:47:37

El unico problema es que la funcion GetWindowText no devuelve el texto de otras aplicaciones que no sean la tuya. Para hacer eso se puede usar el mensage WM_GETTEXT que permite obtener el texto de otras ventanas.

Aqui te dejo un ejemplo que obtiene el texto de todas las ventanas que encuentra y lo escribe en un memo.

Código:

function EnumChildProc(handle: Thandle; Param: lParam): boolean; stdcall;
var
  Buffer: PChar;
  l: integer;
begin
  result:= TRUE;
  l:= sendmessage(handle,WM_GETTEXTLENGTH,0,0);
  if l > 0 then
    begin
      GetMem(Buffer, l+1);
      try
        sendmessage(handle,WM_GETTEXT,l+1,lParam(buffer));
        form1.Memo1.Lines.Add(string(buffer));
      finally
        FreeMem(Buffer);
      end;
    end;
end;

function EnumWindowsProc(handle: Thandle; Param: lParam): boolean; stdcall;
begin
  result:= TRUE;
  EnumChildWindows(handle,@EnumChildProc,0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindows(@EnumWindowsProc,0);
end;



La franja horaria es GMT +2. Ahora son las 15:40:33.

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