Comando DOS no DELPHI

15/07/2004

0

uso um programa em DOS que roda scripts em um banco de dados firebird, chamado ´ibescript´, pore pelo delphi quando faço a chamada para rodar o script dessa forma:

WinExec(Pchar(´ibescript C:\Script\script1.sql´), SW_SHOWMINIMIZED);

ele roda o script, mas nao espera o processo terminar. Tem alguma forma de fazer isso sem ter esse problema?

OBS: Já tentei usar o compoente IBSCRIPT da palheta IBX mas tive problemas com scripts muito grandes.


Daniel Brida

Daniel Brida

Responder

Posts

15/07/2004

Lbcosta

uso um programa em DOS que roda scripts em um banco de dados firebird, chamado ´ibescript´, pore pelo delphi quando faço a chamada para rodar o script dessa forma: WinExec(Pchar(´ibescript C:\Script\script1.sql´), SW_SHOWMINIMIZED); ele roda o script, mas nao espera o processo terminar. Tem alguma forma de fazer isso sem ter esse problema? OBS: Já tentei usar o compoente IBSCRIPT da palheta IBX mas tive problemas com scripts muito grandes.


Vc tera que criar um processo que fique esperando o programa chamado terminar a execução... vou colocar a função logo abaixo



procedure OpenFile(FileName: String; Param: String = ´´; Espera: Boolean = True; Visivel: Boolean = True);
var
si: TStartupInfo;
pi: TProcessInformation;
pr: LPTSTR;
begin
pr := PChar(FileName + ´ ´ + Param);
FillChar(si, SizeOf(TStartupInfo), 0);
si.cb := SizeOf(TStartupInfo);
si.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
if (Visivel) then
si.wShowWindow := SW_NORMAL
else
si.wShowWindow := SW_HIDE;
CreateProcess(nil, pr, nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, si, pi);
if (Espera) then
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
end;


[]s


Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar