Delphi - capturar informacion de otro ventana

 
Vista:

capturar informacion de otro ventana

Publicado por tino (18 intervenciones) el 08/08/2001 13:43:09
Hola , estoi haciendo un programa en el que tengo que controlar todo lo respectivo a el proceso de grabación , y necesito saber si se puede controlar
los textos que aparecen en una ventana de un programa.Por ejemplo , necesito
poder diferenciar en la fase de grabacion si a grabado bien o mal.La unica
diferencia que da la ventana de grabacion es si graba bien un mensajito de
"se ha grabado satisfactoriamente" y si no "No se ha podido grabar".
Saber la caption de la ventana ya lo uso pero en este caso no me vale.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:capturar informacion de otro ventana

Publicado por Ernesto D'Spirito (706 intervenciones) el 08/08/2001 20:18:13
Los detalles te los tendría que dar alguien que maneje las API a fondo, pero en principio, con el título de la ventana, suponiendo que es único puedes usar FindWindow para obtener su handle, y con el handle de la ventana puedes usar unas APIs para recorrer todos los controles que tiene. Con el handle de cada control puedes obtener su nombre, clase y texto. Uno de esos controles será la etiqueta cuyo texto es "No se ha podido grabar" o "Se ha grabado satisfactoriamente".

Espero que te sirva.

Ernesto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:capturar informacion de otro ventana

Publicado por seoane (65 intervenciones) el 08/08/2001 21:02:35
Una forma de hacerlo es comparar el texto que aparece en todas las ventanas
con el que estamos buscando.

Para hacerlo incluye las dos funciones siguientes en tu codigo y llama la funcion
EnumWindows(@EnumWindowsProc,0); cuando quieras que empice a buscar.

Si sabes el handle de la ventana donde aparece el texto puedes suprimir la segunda
funcion y usar directamente EnumChildWindows(hwnd,@EnumChildProc,0); donde
hwnd es el handle de la ventana donde aparece el texto.

function EnumChildProc(HWND: hwnd; PARAMETRO: lParam ): boolean; stdcall;
var
Texto: PChar;
TextMax: Integer;
begin
TextMax:= sendmessage(hwnd, WM_GETTEXTLENGTH,0,0);
if TextMax = StrLen(\'El Texto que buscas\') then
begin
Inc(TextMax);
Getmem(Texto, TextMax);
try
sendmessage(hwnd, WM_GETTEXT, TextMax, LParam(Texto));
if StrIComp(Texto, \'El texto que buscas\') = 0 then
begin
//Encontro el texto
//Lo que tu quieras hacer
end;
finally
Freemem(Texto, TextMax);
end;
end;
EnumChildWindows(hwnd,@EnumChildProc,0);
Result:= TRUE; // TRUE para continuar buscando
end;

function EnumWindowsProc(HWND: hwnd; PARAMETRO: lParam ): boolean; stdcall;
begin
EnumChildWindows(hwnd,@EnumChildProc,0);
Result:= TRUE; // TRUE para continuar buscando
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar