Ir ao topo

Tecnobyte

Logomarca da Tecnobyte
Contato por WhatsApp

WhatsApp

(69) 3421-6756

Contato por Telefone

(69) 3421-6756

(69) 3421-6757

Enviar mensagem

Enviar

mensagem

Contato por Facebook

Facebook

Vídeos

Vídeos

Atendimento de segunda a sexta, das 08h00 às 19h00 (horário de Brasília).

Banner

Delphi - Arquivos, Diretórios e Discos

Como executar um programa e aguardar sua finalização?

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!