24 de fev. de 2011

como executar um programa e aguardar finalizacao ( delphi )

uses windows;

function ExecAndWait(const FileName, Params: string;
  const WindowState: Word): boolean;
var
  SUInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: string;
begin
  {por nome do arquivo entre aspas devido espaco em nome longo}
  CmdLine := '"' + Filename + '"' + Params;
  FillChar(SUInfo, SizeOf(SUInfo), #0);
  with SUInfo do
  begin
    cb := SizeOf(SUInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := WindowState;
  end;
  result := CreateProcess(nil, PChar(CmdLine), nil, nil, false,
                          CREATE_NEW_CONSOLE or
                          NORMAL_PRIORITY_CLASS, nil,
                          PChar(ExtractFilePath(Filename)),
                          SUInfo, ProcInfo);
  {aguarda ate ser finalizado}
  if Result then
  begin
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    {libera os Handles}
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;
end;

Nenhum comentário:

Postar um comentário