Mam takie polecenie:
ShellExecute(0, 'open', PChar(ExtractFilePath(Application.Exename) + 'rar.exe'), PChar('a -r -y -sfx -ep1 -zparam.txt PFRON ' + PFRONPath + '\*.*'), PChar(BackupF + '\tmp'), SW_HIDE);
które odpala mi rara, który kompresuje potrzebne pliki. Zaraz po tym muszę jednak dokońać kilku operacji na nowoutworzonym archiwum (m.in. skopiować go w kilka miejsc). No i tu pojawia się problem, jako że program nie czeka na wykonanie (zamknięcie okna) programu wywołanego przez ShellExecute, tylko działa dalej i np. kopiuje jeszcze niekompletny plik.
Na razie stosuje po ShellExecute polecenie
Sleep(3000);
ale jest to rozwiązanie ze wszech miar złe (albo za długi czas oczekiwania i duży margines błędu albo krótki czas i ryzyko że zawalony innymi procesami komputer nie zdąży).
Jak z poziomu mojej aplikacji wykryć czy ta wywołana przez ShellExecute się już zakończyła? Zapewne trzeba pokombinować trochę z uchwytami, ale nie bardzo wiem jak się do tego zabrać....