A função ExecAndWait mostrada abaixo serve para executar um programa e aguardar até que o mesmo seja finalizado.
Inclua na seção uses: Windows
function ExecAndWait(const FileName, Params: string; const WindowState: Word): boolean; var SUInfo: TStartupInfo; ProcInfo: TProcessInformation; CmdLine: String; begin { Coloca o nome do arquivo entre aspas. Isto é necessário devido aos espaços contidos em nomes longos } CmdLine := '"' + Filename + '"' + Params; FillChar(SUInfo, SizeOf(SUInfo), #0); with SUInfo do begin cb := SizeOf(SUInfo); dwFlags := STARTF_USESHOWWINDOW; wShowWindow := WindowState; end; { Executa o programa. } Result := CreateProcess(nil, PChar(CmdLine), nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo); { Aguarda até que o programa seja finalizado. } if Result then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); { Libera os Handles. } CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end; end;
Exemplo de uso
ExecAndWait('C:\Windows\NotePad.exe', '', SW_SHOW);
Observações
Não esqueça de informar o caminho (path) do arquivo completo.
O conteúdo desta página pode ajudar alguém? Compartilhe!