Ver Mensaje Individual
  #6  
Antiguo 11-12-2012
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Reputación: 20
cesarsoftware Va por buen camino
Thumbs up Solucionado

SOLUCIONADO.

Como no el problema lo tenia Delphi 2010, vamos digo yo, porque a mi no me funciona el codigo de eficsa, recordar que GetClassName me devuelve 0. ¿Usais Delphi 2010?

Es necesario y obligatorio preguntar cuanto va a ocupar el texto a leer y pedir que lea justo ese tamaño

Código Delphi [-]
procedure TFormMain.ListBox1Click(Sender: TObject);
var
  buffer: array[0..8192] of char;
  p: word;
  t: longint;
  handle: THandle;
  s: string;
begin
  s := ListBox1.Items[ListBox1.ItemIndex];
  p := Pos(' ' , s);
  s := Copy(s, 1, p - 1);
  handle := StrToIntDef(s, 0);
  if handle = 0 then
    Exit;
  // Obtener el tamaño del texto del control
  t := SendMessage(handle, WM_GETTEXTLENGTH, 0, 0);
  // Leer el texto del control
  SendMessage(handle, WM_GETTEXT, t + 1, Integer(@buffer));
  {
    si ponemos SizeOf(Buffer) o una constante distinta de t + 1 no funciona
    SendMessage(handle, WM_GETTEXT, SizeOf(Buffer), Integer(@Buffer));
  } 
end;

Espero que os sirva.
Gracias a todos
PD: podemos seguir hasta obtener el objeto y asi hacer con el lo que nos plazca ¿no?
Responder Con Cita