FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
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.
__________________
Suerte .: Gydba :. |
#3
|
||||
|
||||
Cita:
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 |
#4
|
||||
|
||||
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; |
|
|
|