Ich glaub ich hab eine Lösung für dein Problem. Vorrausgesetzt du startest keine Konsolenanwendungen.
Starte dein Programm mit
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| begin CreateProcess(nil, 'notepad',nil, nil, false, 0, nil, nil, StartInfo, ProzessInfo);
While WaitforInputIdle(ProzessInfo.hProcess, infinite) = 0 do begin Application.ProcessMessages; end; end; |
Dieser Code würde jetzt notepad starten (du kannst anstatt notepad dann deine Anwendungen starten) und sich dann in eine While-Schleife begeben die erst beendet wird wenn notepad wieder beendet wird.
Application.ProcessMessages; bewirkt lediglich das deine Parentanwendung noch bedienbar bleibt (falls du das wünscht).
StartInfo und Prozessinfo müssen zuvor deklariert werden:
Delphi-Quelltext
1: 2: 3:
| var StartInfo : _STARTUPINFOA; ProzessInfo : Process_Information; |
Vielleicht hat aber jemand hier in dem Forum wie man das gleiche mit Konsolenanwendungen hinkriegt?
In der msdn erklärung steht eindeutig das WaitforInputIdle nur mit GUI Prozessen funktioniert

ich muss aber eine rar.exe ausführen...
Übrigens: Createprocess sucht nach den Anwendungen
1. im Verzeichnis aus der die Anwendung gestartet wurde
2. im Verzeichnis des "parent process"
3. im 32 Bit windows system Verzeichnis
4. im 16 Bit Windows system Verzeichnis
5. im Windows verzeichnis
6. in den globalen Pfaden
Moderiert von
Motzi: Code- durch Delphi-Tags ersetzt.