..und nochmal.
Nach einer weiteren genaueren Sichtung des Forumarchivs, bin ich auf
Code:
function WinExec32AndWait(const Cmd: string; const CmdShow: Integer): Cardinal;
var
sui : TStartupInfo;
pi : TProcessInformation;
begin
Result := Cardinal($FFFFFFFF);
ZeroMemory(@sui,sizeof(TStartupInfo)); sui.cb := SizeOf(TStartupInfo);
sui.dwFlags := STARTF_USESHOWWINDOW;
sui.wShowWindow := CmdShow;
if(CreateProcess(nil,pchar(Cmd),nil,nil,False,NORMAL_PRIORITY_CLASS,nil,nil,sui,pi)) then
begin
WaitForInputIdle(pi.hProcess, INFINITE);
if(WaitForSingleObject(pi.hProcess, INFINITE) = WAIT_OBJECT_0) then
begin
{$IFDEF DELPHI3}
if not GetExitCodeProcess(pi.hProcess, Integer(Result)) then
{$ELSE}
if not GetExitCodeProcess(pi.hProcess, Result) then
{$ENDIF DELPHI3}
Result := Cardinal($FFFFFFFF);
end;
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
end;
end;
gestossen. Ist ziemlich ähnlich dem Code von Luckie. Ich habe dann den Aufruf des programms so gemacht:
Code:
var ChildExitCode: Cardinal;
begin
ChildExitCode := WinExec32AndWait('"C:\Program Files\Borland\Delphi6\Bin\Delphi32.exe"', SW_NORMAL);
if ChildExitCode = $FFFFFFFF then
ShowMessage('Delphi 6 konnte nicht gestartet werden.');
end;
Das klappt auch, also er startet die Programme nun alle wie gewuenscht.
Nun passiert aber folgendes. Die Programme die aufgerufen werden, sind Installer (InstallShield, Wise etc), und haengen teilweise einfach (manchmal bei 40% oder 99% der Initialiserung des Installers).
Im Taskmanager sehe ich dann folgende Prozesse:
wowexec.exe
winoldap.mod
setup.exe
_isdel.exe
(diese stehen um ein Leerzeichen versetzt in der Liste !?, bedeutet
wohl das diese Prozesse "haengen")
Wenn ich nun den Prozess "setup.exe" im Taskmanager abschiesse, kommt erstaunlicherweise der ganz normale Setup- Dialog des Programms - die Wartezeit meiner Delphiapplikation ist dann aber wieder abgelaufen, und man kann dort munter weitermachen. Dies ist nicht ganz so tragisch, weil wohl auch nicht vermeidbar, denn die Function die benutzt wird prueft nur auf den einen zu startenden Prozess und nicht weitere Prozesse die gestartet werden.
Aber das Setup sollte schon ganz normal starten. Habe leider keine Idee mehr woran das liegen koennte :/ Vielleicht weil ich Windows XP benutze?
Bin für jede Hilfe von Euch Pro's dankbar
Gruss,
Sascha