GARANTIR DESCONTO

Fórum Executar outro programa a partir do Sistema em ShowModal. #184426

26/09/2003

0

Olá, Pessoal.
Estou tentando executar um aplicativo de backup que é chamado pela SHELL winexec(´caminho´,sw_shownormal);
O que faço é o seguinte.: Quando se entra no utilitario de backup,
- Desconecto o banco de dados;
- Executo o winexec;
- Conecto o banco novamente.

Só que quando executa o winexec ele passa direto e não fica em showmodal o aplicativo de backup, esperando a finalização para depois conectar o banco novamente.
Alguém sabe como faço para solucionar esse probleminha ?
Sem mais, agradeço desde já.
Fiquem com Deus e que Jesus ilumine seus passos sempre por onde andares.

Ovidio Jr.


Ovidio

Ovidio

Responder

Posts

26/09/2003

Barcelos

Caro amigo,

Para executar o programa e esperar que ele termine, vai a seguinte rotina (tirada do Deephi)

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,...).


Quanto ao programa de backup não ficar em showmodal, tente o seguinte:
Se o aplicativo de backup foi feito por você, coloque no form principal a propriedade formstyle em fsStayOnTop. Desta forma ele ficará na frente de qualquer outro aplicativo.

Espero ter ajudado
Barcelos
osbarcelos@hotmail.com


Responder

Gostei + 0

26/09/2003

Ovidio

Olá, Barcelos.
Desde já agradeço a sua ajuda.
Só que não funcionou. Não executou o aplicativo de backup.
Ele passa direto no código.

Sabe me dizer porque ?

Ovidio Jr.


Responder

Gostei + 0

26/09/2003

Ovidio

Desculpe, Barcelos. Mas agora funcionou.

Que Deus nos abençoe para sempre.

Ovidio Jr.


Responder

Gostei + 0

26/09/2003

Barcelos

OK Ovidio,

Precisando estamos aí...


Barcelos
osbarcelos@hotmail.com


Responder

Gostei + 0

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

Aceitar