Sorki jesli juz bylo - szukalem ale nie znalazlem :)
Chce odpalic ( shellexecute) kilka programow (instalki silent) ale nie jednoczesnie tylko tak aby odpalaly sie jeden po drugim czym sprawdzic, ze dany program sie zakonczyl i mozna odpalic nastepny ?
Z gory dziekuje za podpowiedz
0
0
nie używać shellexecute a createProcess i czekać aż się zakończy (więcej informacji znajdziesz na MSDN).
0
Odpalenie programu i czekanie na jego zakończenie wygląda tak:
var
proc_info: TProcessInformation;
startinfo: TStartupInfo;
begin
ZeroMemory(@proc_info, sizeof(proc_info));
ZeroMemory(@startinfo, sizeof(startinfo));
startinfo.cb := sizeof(TStartupInfo);
if CreateProcess(PChar(FileName), PChar(CommandLine), nil, nil, FALSE, NORMAL_PRIORITY_CLASS, nil, nil, startinfo, proc_info) then
begin
WaitForSingleObject(proc_info.hProcess, INFINITE);
CloseHandle(proc_info.hThread);
CloseHandle(proc_info.hProcess);
end;
end.