Ver Mensaje Individual
  #9  
Antiguo 20-05-2012
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Reputación: 15
BrunoBsso Va por buen camino
Thumbs up

Bueno, les comento que ya solucioné mi problema. Chau.



















Jajaja no me voy a ir así nomás

Lo solucioné con la ayuda de roman haciendo un leve cambio. En vez de utilizar GetFocus() usé una variable THandle y le asigné la ventana con GetForegroundWindow.
Les muestro precisamente cómo quedó y cómo funciona:
Código Delphi [-]
procedure TForm1.WaitUntilFieldFocused(sFieldName: String);
var
  Handle: THandle;
  Buffer: array[Byte] of Char;
begin
  Handle := GetForegroundWindow;
  Buffer := '';
  while (Buffer <> sFieldName) do
  begin
    ZeroMemory(@Buffer, SizeOf(Buffer));
    GetClassName(Handle, Buffer, 255);
    Sleep(250);
  end;
end;

Solamente recibe el nombre (que lo obtuve usando otra mini aplicación con GetClassName(Handle, Buffer, 255) y las mismas variables) y espera hasta que aparece focuseado, que por la lógica de mi aplicación es 100% seguro que va a estar focuseado aunque tarde mucho tiempo.
El procedimiento lee el nombre del TWinControl (agradecimiento enorme a roman por explicarme que todo componente es una ventana ) y lo compara con el nombre que le pedís que encuentre. Si no lo encuentra se pausa 0.0250 segundos y vuelve a mirar. Nada más, muy simple.

Muchas gracias a los que aportaron, a los que lo leyeron y no pudieron responder pero pensaron a ver si se les ocurría algo, a todos.

Si algún moderador pudiera editar el nombre del topic y ponerle al principio "[RESUELTO]" y cerrarlo sería grandioso y que quede como ejemplo

Saludos!!!!!!!!!!!!!!
Responder Con Cita