Executar comando DOS e aguardar finalização

01/09/2004

Estou utilizando o CreateProcess para chamar o pkunzip (DOS) Segue abaixo o código que estou utilizando

var
vOpProc: TStartupInfo;
vProc: TProcessInformation;


vOpProc.dwFlags:=STARTF_USESHOWWINDOW;
vOpProc.wShowWindow:=SW_HIDE;

if CreateProcess(nil, PChar(´pkunzip ´+vPath+´ -s[envio]´), nil,nil, False,
0, nil, PChar(ExtractFilePath(Application.ExeName)), vOpProc, vProc) then
begin
WaitForSingleObject(vProc.hProcess, INFINITE);
CloseHandle(vProc.hProcess);
CloseHandle(vProc.hThread);
end
else
raise Exception.Create(´Não foi possível descompactar os arquivos´);

Quando utilizo vOpProc.wShowWindow diferente de SW_HIDE o usuário fecha a janela e a execução volta para o sistema em Delphi. Só que com o SW_HIDE a janela não é vista e o usuário não pode fecha-la, então o programa entra em loop constante.

Como resolver este problema?

Agradeço pela força,

Braytiner