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!!!!!!!!!!!!!!