Hola:
Es un tema recurrente en el foro, pero que no me acaba de funcionar correctamente:
Código Delphi
[-]
procedure TForm2.Button2Click(Sender: TObject);
function ExecuteProcess(ProcessName: String): Cardinal;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
Result := 0;
FillChar(StartInfo, SizeOf(StartInfo), 0);
StartInfo.cb := SizeOf(StartInfo);
if CreateProcess(
PChar(ProcessName), nil, nil, nil, false, 0,
nil, nil, StartInfo, ProcInfo)
then
Result := ProcInfo.hProcess;
end;
var
Process, i: Cardinal;
begin
Application.Minimize;
Process := ExecuteProcess(prog_7Zip.unistall);
if Process <> 0 thenWaitForSingleObject(Process, INFINITE);
Application.Restore;
end;
Lo que pretendo es que el programa principal espere minimizado hasta que el usuario finalice con el que se iniciado.
Lo que me ocurre es que se minimiza el programa, se lanza el desintalador pero inmediatamente se restarura el programa principal. En este ejemplo se trata de llamar al desintalador de 7-Zip, pero me sucede no sólo con él.
También he probado con el truco
168 con el mismo resultado.
Trabajo con XP y Delphi 7 / Borland Developer Estudio 2006
Muchas gracias de antemano.