[Delphi3]Programme starten & dabei Programm Pause

Hallo,
ich möchte aus einer Anwendung heraus ein Programm starten. Dazu benute ich die Methode Shellexecute aus der Unit shellapi. Nun ist es allerdings so, dass zwar das exterene Programm wie gewünscht gestartet wird, doch das Hauptprogramm ebenfalls weiter läuft. Dies ist für mich allerdings eher hinderlich, denn das Hauptprogramm soll erst weiter ausgeführt werden, wenn das externe Programm beendet wurde. Wie geht das?

Vielen Dank im voraus,
Mathias

Du musst, glaube ich, das Fenster mit findwindow suchen und das Mainprogramm so lange in einer repeat-until Schleife laufen lassen, bis das gestartete Programm nicht mehr gefunden werden kann.Wies ganz genau läuft weiss ich gerade auch nicht.

Mario

mit folgender function startest ein Programm und wartest auf dessen Beendigung…leider nicht von mir, hab ich aus irgendeiner newsgroup…der Author möge mir verzeihen

function WinExecAndWait32(FileName,WorkingDir:String; Visibility :
integer):integer;
var
zAppName:array[0…512] of char;
zCurDir:array[0…255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
Dummy: Cardinal;
begin
StrPCopy(zAppName,FileName);
if WorkingDir=’’ then
GetDir(0,WorkDir)
else
WorkDir := WorkingDir;
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);

StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil,
zAppName, { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
false, { handle inheritance flag }
CREATE_NEW_CONSOLE or { creation flags }
NORMAL_PRIORITY_CLASS,
nil, { pointer to new environment block }
nil, { pointer to current directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo) then { pointer to PROCESS_INF }
Result := -1

else
begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Dummy);
Result:=Dummy;
end;
end;