Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.566 Beiträge
 
Delphi 10.4 Sydney
 

Re: Fehler in RunProcess Funktion?!

  Alt 2. Dez 2009, 13:26
bei dir dürftest du die if ProcessInfo.xxx <> 0 then weglassen können, da an dieser Stelle die Handles ja vorhanden sein sollten.


PS:
bei if wait = FALSE then ... exit; wären die Handles nicht freigegeben worden

und auch das Result wäre da undefiniert geblieben (meckert diesbezüglich eigentlich Delphi nicht? )

Delphi-Quellcode:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PCardinal): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    try
      if not wait then
      begin
        if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
        Result := S_OK;
        exit;
      end;
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
      GetExitCodeProcess(ProcessInfo.hProcess, Result);
    finally
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
    end;
  end;
end;
Zitat von alleinherrscher:
Okay, dann sollten wir das vielleicht mal in der Code-Library ändern...
hatte es schon gemeldet und mal sehn ob/wann sich ein Mod drum kümmert


[edit]
noch schnell das Result:=S_OK; eingefügt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat