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]