Fórum Winexec ou Shellexecute #372703
23/07/2009
0
Colegas;
Existe uma maneira de executar um comando Winexec ou Shellexecute de forma modal? Ou seja, só quero continuar o processamento do meu programa depois que a execução do Winexec (ou Shellexecute) acabe.
Abraço!
Existe uma maneira de executar um comando Winexec ou Shellexecute de forma modal? Ou seja, só quero continuar o processamento do meu programa depois que a execução do Winexec (ou Shellexecute) acabe.
Abraço!
Vispo
Curtir tópico
+ 0
Responder
Posts
24/07/2009
Guinther
Use CreateProcess
function CreateProcessAndWait(const AppPath, AppParams: String; Visibility:
word): DWord;
var
SI: TStartupInfo;
PI: TProcessInformation;
Proc: THandle;
begin
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.wShowWindow := Visibility;
if not CreateProcess(PChar(AppPath), PChar(AppParams), Nil, Nil, False,
Normal_Priority_Class, Nil, Nil, SI, PI) then
raise EExecuteError.CreateFmt(´Failed to execute program. Error Code
¬d´, [GetLastError]);
Proc := PI.hProcess;
CloseHandle(PI.hThread);
if WaitForSingleObject(Proc, Infinite) <> Wait_Failed then
GetExitCodeProcess(Proc, Result);
CloseHandle(Proc);
end;
function CreateProcessAndWait(const AppPath, AppParams: String; Visibility:
word): DWord;
var
SI: TStartupInfo;
PI: TProcessInformation;
Proc: THandle;
begin
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.wShowWindow := Visibility;
if not CreateProcess(PChar(AppPath), PChar(AppParams), Nil, Nil, False,
Normal_Priority_Class, Nil, Nil, SI, PI) then
raise EExecuteError.CreateFmt(´Failed to execute program. Error Code
¬d´, [GetLastError]);
Proc := PI.hProcess;
CloseHandle(PI.hThread);
if WaitForSingleObject(Proc, Infinite) <> Wait_Failed then
GetExitCodeProcess(Proc, Result);
CloseHandle(Proc);
end;
Responder
Gostei + 0
27/07/2009
Vispo
Obrigado [b:a619163d50]Guinther[/b:a619163d50], era o que eu precisava! :)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)