GARANTIR DESCONTO

Fórum Aguardando execução #333259

17/11/2006

0

Galera, não estou sabendo usar.

Preciso que minha apliacação aguarde um winexec

Tenho Esta função de aguardar:

function flExecAndWait(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;

Result := CreateProcess(nil, PChar(CmdLine), nil, nil, false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);
{ Aguarda até ser finalizado }

// if Result then begin
// WaitForSingleObject(ProcInfo.hProcess, 5000);
{ Libera os Handles }
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);

// end;

end;


e mais essa de executar ( descompactar um arquivo );

Winexec(PChar(´\\meuservidor\C\Descompact\Winrar.exe e ´ + ArqRar + ´ ´ + ´C:\´) , SW_HIDE);


Como faço para o sistema aguardar o término deste processo.

Abraço a todos


Tremonti

Tremonti

Responder

Posts

17/11/2006

Tremonti

Alguem?!


Responder

Gostei + 0

17/11/2006

Paullsoftware

amigo, tente essa função aqui...

function ExecExterno(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;
  Result := CreateProcess(nil, PChar(CmdLine), nil, nil, false,
  CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
  PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);
  { Aguarda até ser finalizado }
  if Result then begin
  WaitForSingleObject(ProcInfo.hProcess, INFINITE);
  { Libera os Handles }
  CloseHandle(ProcInfo.hProcess);
  CloseHandle(ProcInfo.hThread);
  end;
end;
espero ter ajudado! :wink:


Responder

Gostei + 0

07/08/2007

Acacio

Por que a função ExecExterno abaixo só funciona quando fecho o Delphi? Ou seja estou executando um instalador do sysBase 6. Ele fica
pensando e quando eu fecho o Delphi ai ele entra no programa de instalação.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar