Caro colega Utilize a função abaixo. Encontrei em um site de um colega.
Chamar o programa externo. WinExecAndWait32('SisAux',SW_SHOW); Função { * Executa um arquivo externo, e aguarda que ele seja encerrado * para continuar a execução normal } function WinExecAndWait32(FileName: String; Visibility: integer): longword; { FileName: nome do arquivo (não requer a extensão, e faz a pesquisa na variável 'Path' do sistema Visibility: use SW_SHOW ;-) } var zAppName: array[0..512] of char; zCurDir: array[0..255] of char; WorkDir: String; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin StrPCopy(zAppName,FileName); GetDir(0,WorkDir); StrPCopy(zCurDir,WorkDir); FillChar(StartupInfo,Sizeof(StartupInfo),#0); StartupInfo.cb := Sizeof(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := Visibility; if CreateProcess( nil, zAppName, { pointer to command line string } nil, { pointer to process security attributes } nil, { pointer to thread security attributes } false, { handle inheritance flag } CREATE_NEW_CONSOLE or { creation flags } NORMAL_PRIORITY_CLASS, nil, { pointer to new environment block } nil, { pointer to current directory name } StartupInfo, { pointer to STARTUPINFO } ProcessInfo) then begin repeat GetExitCodeProcess(ProcessInfo.hProcess,result); { A linha abaixo (ProcessMessages) evita que o seu programa fique "travado" durante a execução do aplicativo. } Application.ProcessMessages; { Esta estrutura 'If' permite que seja implementado um botão de cancelamento dentro do programa. Se não utilizar, apague a estrutura inteira (o If e o TerminateProcess) } // if FormularioPrincipal.Cancelar then // TerminateProcess(ProcessInfo.hProcess,Result); until (Result = 0); end; end; Atenciosamente Washington A. Müller da Silva ##################### NextCorp Informática Ltda www.nextcorp.com.br [EMAIL PROTECTED] 0 xx (51)-3589-3690 #################### ----- Original Message ----- From: "Vandinei Santos - Oi" <[EMAIL PROTECTED]> To: "Delphi-Br" <delphi-br@yahoogrupos.com.br> Sent: Monday, November 07, 2005 10:19 AM Subject: [delphi-br] Executar e Esperar término de um aplicativo Prezados Colegas, Desenvolvi um sistema e para fazer a sua distribuição, criei um programa instalador para facilitar a instalação e importação dos dados iniciais para a sua operação. O programa instalador é executado pela autoreprodução do CD-ROM. Contudo, quando clico em cada uma das opções, antes que o aplicativo da respectiva opção clicada seja finalizado, a mensagem de que o opção foi realizada com sucesso é emitida, mesmo até quando um erro. Eu preciso fazer com que a mensagem só seja emitida quando a opção seja realmente finalizada. Tentei a função "ExecuteAndWait", mas ela no Win2000 está travando e não está realizando o que se destina. Alguém tem uma sugestão ou idéia de como eu contorno esse problema? Agradeço desde já a coloboração. Abraços cordiais, Vandinei Santos [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Links do Yahoo! Grupos -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.1.362 / Virus Database: 267.12.8/162 - Release Date: 05/11/2005 -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html