Cita:
Empezado por escafandra
Concuerdo con roman al advertir que ese código tiene algo que llama la atención. Handle tiene el valor de la ventana que deseas siempre que le de tiempo a estar abierta en ese momento. Pero el código, tal como está me hace pensar que o bien el bucle sobra, o la obtención del Hanle debe realizarse dentro del mismo. Si la función pretende esperar a que el nombre de la clase del Handle obtenido sea el que esperas, entonces tu función debe ser modificada a algo como esto:
Código Delphi [-]procedure TForm1.WaitUntilFieldFocused(sFieldName: String);
var
Handle: THandle;
Buffer: array[Byte] of Char;
begin
Buffer := '';
while (Buffer <> sFieldName) do
begin
Handle := GetForegroundWindow;
ZeroMemory(@Buffer, SizeOf(Buffer));
GetClassName(Handle, Buffer, 255);
Sleep(250);
end;
end;
Saludos.
|
Escafandra, el bucle en esa función es solamente para darle tiempo al SO de mostrar bien la ventana dado que todo el proceso es a través de máquinas virtuales.
El handle, por otra parte, lo consigo
correctamente y sin problemas porque justo antes de entrar en la función abro la ventana. No entiendo por qué les cuesta tanto creer que funciona perfectamente...