Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-12-2012
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Poder: 18
cesarsoftware Va por buen camino
Leer strings de otra aplicacion

Hola foreros, me gustaria poder leer las lineas escritas (y poder escribir) de un campo, creo que es richtext de otra aplicacion.
El motivo es que dicha aplicacion guarda los datos en formato binario y me parece que va a ser dificil interpretar esa informacion.
Y parece ser que tienen una aplicacion (que solo funciona en win95) que ya hace eso que ahora me piden a mi (para modernizarlo, jejeje)

Hasta ahora lo que he conseguido es:
1) Localizo las aplicaciones en ejecucion.
Código Delphi [-]
function EnumWinProc(Wnd: HWND; Param: pointer): boolean; stdcall; export;
var
  WinText: array[0..255] of char;
  pID: longword;
begin
  Result := True;
  // Obtenemos el Texto de la Ventana
  GetWindowText(Wnd, WinText, 255);
  if (WinText <> '')
  and (IsWindowVisible(Wnd))
  and (GetWindow(Wnd, gw_Owner) = 0)
  then
  begin
    GetWindowThreadProcessId(Wnd, pID);
    FormMain.Memo1.Lines.Add(IntToStr(pID) + ' ' + WinText);
    FormMain.Memo1.Lines.Add(StringOfChar('-', 80));
    ListWinInfoFromPId(pID, FormMain.Memo1.Lines);  // este es el paso 2
  end;
end;

2) Localizo las ventanas de cada aplicacion.
Código Delphi [-]
procedure ListWinInfoFromPId(PId: DWORD; strings: TStrings);
type
  TWinParam = record
    PId: DWORD;
    S: TStrings;
  end;
  PWinParam = ^TWinParam;
var
  WinParam: TWinParam;

  function EnumWindowsProc(Handle: Thandle; lParam: LPARAM): boolean; stdcall;
  var
    PId: DWORD;
    buffer: array [1..255] of char;
  begin
    Result := true;
    PId := 0;
    GetWindowThreadProcessId(Handle, PId);
    if PWinParam(lParam).PId = PId then
    begin
      PWinParam(lParam).S.Add('hWnd: ' + IntToHex(Handle, 8)+'h');
      GetWindowText(Handle, @buffer, 255);
      PWinParam(lParam).S.Add('Caption: ' + buffer);
      GetClassName(Handle, @buffer, 255);
      PWinParam(lParam).S.Add('Clase: ' + buffer);
      PWinParam(lParam).S.Add('--------------------');
      Result := true;
    end;
  end;

begin
  WinParam.PId:= PId;
  WinParam.S:= strings;
  EnumWindows(@EnumWindowsProc, LPARAM(@WinParam));
end;

3) Localizar los controles de cada ventana, aqui es donde necesito ayuda
Para obtener los controles de nuestra aplicacion uso
Código Delphi [-]
  for i := 0 to (ComponentCount - 1) do
  begin
    if Components[i] is TWinControl then
    begin
      if (Components[i] is TEdit)
      or (Components[i] is TMaskEdit)
      or (Components[i] is TCheckBox) then
      begin
        Memo1.Lines.Add(Components[i].Name);
        TFormMain(Components[i]).OnEnter := nil;
        TFormMain(Components[i]).OnExit := nil;
      end;
    end;
  end;

¿Como podria obtener los controles de cada ventana? he buscado por todas parte y no encuentro la funcion, y se que deberia existir.

El cuarto paso seria crear una thread que vigile dicho control y cuando entren nuevas lineas, las capturo e interpreto.
El quinto paso serie escribir en ese mismo control ciertas lineas que son necesarias.

Alguna ayudita, please.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Leer parámetros que manda otra aplicación NPIdea API de Windows 2 14-09-2010 11:20:22
leer y escribir en archivos .txt o cualquier otra extension jafi666 Varios 1 13-03-2008 23:14:19
Leer texto de otra aplicación erika.martinez API de Windows 17 04-05-2007 00:45:15
leer cadena de otra aplicacion jar OOP 2 05-02-2007 20:18:12


La franja horaria es GMT +2. Ahora son las 22:49:48.


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
Copyright 1996-2007 Club Delphi