Ver Mensaje Individual
  #13  
Antiguo 22-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
Cita:
Empezado por escafandra Ver Mensaje
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...
Responder Con Cita