Executar outro aplicativo a partir do Delphi, Como Faço?
19/02/2003
0
preciso chamar outra aplicação com o evendo click do botão.
Anonymous
Curtir tópico
+ 0
Responder
Posts
19/02/2003
Carnette
VOCE PODERIA EXECUTAR O COMANDO ABAIXO
WinExec(´PROGRAMATAL.EXE´,sw_ShowNormal);
MAS, A MANEIRA CORRETA DE FAZER É ESTA ROTINA ABAIXO
Executar um programa e aguardar sua finalização antes de continuar
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,...).
WinExec(´PROGRAMATAL.EXE´,sw_ShowNormal);
MAS, A MANEIRA CORRETA DE FAZER É ESTA ROTINA ABAIXO
Executar um programa e aguardar sua finalização antes de continuar
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,...).
Responder
20/02/2003
Dor_poa
Nossa carnette.... Assim até eu me confundi :D O melhor para ele é usar o WINEXEC..
Desculpe por me metre, mas acho que ele ia se perder, ou só ia copiar e não ENTENDER>>>>>.... :P
Desculpe por me metre, mas acho que ele ia se perder, ou só ia copiar e não ENTENDER>>>>>.... :P
Responder
Clique aqui para fazer login e interagir na Comunidade :)