Chamar um programa e esperar a finalização

Para executar um programa e esperar até esse programa finalizar, use a rotina abaixo:

  • Acrescente na cláusula  uses  as units:  uses System,Windows,SysUtils;

function Executa (Arquivo : String; Estado : Integer) : Integer;
var
  Programa : array [0..512] of char;
  CurDir : array [0..255] of char;
  WorkDir : String;
  StartupInfo : TStartupInfo;
  ProcessInfo : TProcessInformation;
begin
  StrPCopy (Programa, Arquivo);
  GetDir (0, WorkDir);
  StrPCopy (CurDir, WorkDir);
  FillChar (StartupInfo, Sizeof (StartupInfo), #0);
  StartupInfo.cb := sizeof (StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := Estado;
  if not CreateProcess (nil, Programa, nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
    Result := -1
  else
  begin
    WaitForSingleObject (ProcessInfo.hProcess, Infinite);
    GetExitCodeProcess (ProcessInfo.hProcess, Result);
  end;
end;



Estado é o tipo de janela que aparecerá, que pode ser:
 
  • SW_SHOWNORMAL(Janela em modo normal)
  • SW_MAXIMIZE (Janela maximizada)
  • SW_MINIMIZE (Janela minimizada )
  • SW_HIDE (Janela Escondida)

Comentários

Postagens mais visitadas deste blog

[resolvido] USB To Serial Prolific no Windows 7 e 8x e 10

Como Alterar o Perfil da Rede Pública para Privada no “Windows 8.1″ e “Windows Server 2012″

Corrigir BAD_SYSTEM_CONFIG_INFO no Windows 7,8, 8.1, 10