Boa noite;dia pessoal...
Estou com problemas aqui numa rotina para fechar uma janela que aparece 
após inserir um PenDrive. Meu programa detecta quando um PenDrive é 
inserido e faz diversas coisas, uma delas é tentar fechar esta janela do 
Windows Explore que é aberta.

Tentei assim...:

procedure exemplo;
var
_h : hwnd;
_Drive : String;
begin
   Drive := 'E:'; // Capturando por uma rotina de detecção, o retorno é 
este mesmo.
__repeat
___h := FindWindow(nil, PChar('Disco removível (' + Drive + ')'));
___Application.ProcessMessages;
__until h > 0;

SendMessage(h, WM_CLOSE, 0,0);
end;

// Já tentei com PostMessage e também não funciona, a diferença de Post 
para Send
// é que um espera o retorno e o outro não espera.

// Alguém teria alguma outra solução?
// De alguma forma, a var "h" recebe um valor pois está passando do 
until, mas noto
// que a janela está abrindo um tempo depois e o comando SendMessage não 
espera
// esse tempo e já manda fechar logo.  Ia até colocar um Timer e esperar 
mais um pouco
// mas cada computador tem seu tempo de processo, um pouco antes ou um 
pouco
// depois, queria algo que ficasse num loop esperando a janela aparecer 
para depois
// fecha-la, mas preciso que seja uma coisa rápida para não ficar na 
frente da aplicação.

Aguardo qualquer sugestão.

Grato

Responder a