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.
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
Curtir tópico
+ 0
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
Clique aqui para fazer login e interagir na Comunidade :)