podes mandar um exemplo de como se chama a aplicação? Aqui não ta rodando.
Devo estar fazendo algo de errado.




Att,


  -----Mensagem original-----
  De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
nome de Edu Nicácio
  Enviada em: sexta-feira, 2 de março de 2007 17:09
  Para: delphi-br@yahoogrupos.com.br
  Assunto: Re: [delphi-br] Executar um comando no dos e aguardar execução


  Tenho uma função que faz isso aqui e funciona certnho. Sugiro que teste
antes de colocar em produção.

  Segue:

  ----------------------------------------------------------

  ////////////////////////////////////////////////////////////////
  // FileName : nome do documento ou programa que será aberto.
  // Parameters: parâmetros de linha de comando.
  // ExitCode : código de saída da aplicação (disponível apenas se Wait >
0).
  // Wait : maximo de tempo a aguardar, até a aplicação ser finalizada
[milissegundos].
  // depois de atingido esse tempo, a aplicação é finalizada e
  // False é retornado como resultado.
  // 0 = não aguarda a aplicação, retorna imediatamente.
  // Hide : True = aplicação roda invisível em background.
  // Result : True = aplicação foi iniciada corretamente
  // False = aplicação não pôde ser iniciada, ou o Timeout expirou
  // Source : http://www.martinstoeckli.ch/delphi/delphi.html#AppStart
  ////////////////////////////////////////////////////////////////
  function Sto_ShellExecute(const FileName, Parameters: String; var
ExitCode: DWORD;
  const Wait: DWORD = 0; const Hide: Boolean = False): Boolean;
  var
  myInfo: SHELLEXECUTEINFO;
  iWaitRes: DWORD;
  begin
  // prepare SHELLEXECUTEINFO structure
  ZeroMemory(@myInfo, SizeOf(SHELLEXECUTEINFO));
  myInfo.cbSize := SizeOf(SHELLEXECUTEINFO);
  myInfo.fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_NO_UI;
  myInfo.lpFile := PChar(FileName);
  myInfo.lpParameters := PChar(Parameters);
  myInfo.lpDirectory := PChar(ExtractFileDrive(FileName));
  if Hide then
  myInfo.nShow := SW_HIDE
  else
  myInfo.nShow := SW_SHOWNORMAL;
  // start file
  ExitCode := 0;
  Result := ShellExecuteEx(@myInfo);
  // if process could be started
  if Result then
  begin
  // wait on process ?
  if (Wait > 0) then
  begin
  iWaitRes := WaitForSingleObject(myInfo.hProcess, Wait);
  // timeout reached ?
  if (iWaitRes = WAIT_TIMEOUT) then
  begin
  Result := False;
  TerminateProcess(myInfo.hProcess, 0);
  end;
  // get the exitcode
  GetExitCodeProcess(myInfo.hProcess, ExitCode);
  end;
  // close handle, because SEE_MASK_NOCLOSEPROCESS was set
  CloseHandle(myInfo.hProcess);
  end;
  end;

  ----------------------------------------------------------

  Abraço.

  ----------------------------------------------------------
  Atenciosamente:

  Eduardo Cláudio Nicácio
  Analista Programador JR.
  Fábrica 02 - CTIS
  Tel.: (11) 3150-6834
  [EMAIL PROTECTED]


  ----- Original Message -----
  From: Natanael Rodrigues
  To: delphi-br@yahoogrupos.com.br
  Sent: Friday, March 02, 2007 10:34 AM
  Subject: RES: [delphi-br] Executar um comando no dos e aguardar execução

  EX:

  ExecAndWait('start G:\BACKUPS\rar.exe', '', SW_SHOW);
  ExecAndWait('rar a -e G:\BACKUPS\backup.rar *.*', '', SW_SHOW);

  -----Mensagem original-----
  De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
  nome de Gabriel Filho
  Enviada em: sexta-feira, 2 de março de 2007 10:20
  Para: delphi-br@yahoogrupos.com.br
  Assunto: Re: [delphi-br] Executar um comando no dos e aguardar execução

  posta ai como vc esta usando esta funcao

  Em 02/03/07, Natanael Rodrigues <[EMAIL PROTECTED]> escreveu:
  >
  > Este eu testei.... mas não rola... por exemplo o comando start
  > "G:\BACKUPS\rar.exe" não executa, quando eu rodo pelo winexec ele já
  > executa.
  >
  > sds.
  >
  > -----Mensagem original-----
  > De: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>
  [mailto:
  > delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>]Em
  > nome de Gabriel Filho
  > Enviada em: sexta-feira, 2 de março de 2007 09:53
  > Para: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>
  > Assunto: Re: [delphi-br] Executar um comando no dos e aguardar execução
  >
  > Retirado do Dtdelphi 2.8
  > Inclua na seção uses: Windows
  >
  > { Esta função faz isto. }
  >
  > 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;
  > 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;
  > - Exemplo de uso:
  >
  > ExecAndWait('c:\windows\notepad.exe', '', SW_SHOW);
  > Observações
  > Não se esqueça de informar o caminho (path) do arquivo completo. Esta
  > função
  > foi desenvolvida para Delphi 32 bits (2, 3, 4,...).
  >
  > Em 02/03/07, Natanael Rodrigues <[EMAIL PROTECTED]
  <nr.news%40gmail.com>>
  > escreveu:
  > >
  > > Estou executando uma aplicação via comando winexec que é os comandos
  de
  > > Backup da minha rede, gostaria que cada vez que é gerado essa linha de
  > > comando o sistema aguarda o termino da execução. Alguem sabe como
  posso
  > > fazer isto?
  > >
  > > att.
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > >
  > >
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  >
  >

  [As partes desta mensagem que não continham texto foram removidas]

  [As partes desta mensagem que não continham texto foram removidas]

  [As partes desta mensagem que não continham texto foram removidas]



  


[As partes desta mensagem que não continham texto foram removidas]

Responder a