Einzelnen Beitrag anzeigen

sahmann

Registriert seit: 21. Jan 2003
15 Beiträge
 
#2

Re:

  Alt 22. Jan 2003, 15:48
..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
  Mit Zitat antworten Zitat