Registriert seit: 29. Mai 2002
37.621 Beiträge
Delphi 2006 Professional
|
Re: ExitCode von Expand
26. Sep 2003, 01:14
Sieht bei mir dann so aus:
Code:
D:\>expand i:\foo.sy_ d:\foo.sys
Microsoft (R) Programm zur Dateiexpandierung Version 5.00.2134.1
Copyright (C) Microsoft Corp. 1990-1999. Alle Rechte vorbehalten.
Fehler beim Öffnen der Eingabedatei: i:\foo.sy_.
D:\>if errorlevel 1 echo code 1
D:\>if errorlevel 0 echo code 0
D:\>pause
Drücken Sie eine beliebige Taste . . .
Was sagt mir das jetzt?
Und so bekomme ich auch 0 raus:
Delphi-Quellcode:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PDWORD): 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
if wait = FALSE then
begin
if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
exit;
end;
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, Result);
end;
if ProcessInfo.hProcess <> 0 then
CloseHandle(ProcessInfo.hProcess);
if ProcessInfo.hThread <> 0 then
CloseHandle(ProcessInfo.hThread);
end;
function GetExitCodeExpand(PID: LongWord): Integer;
var
hProcess: THandle;
Code: Cardinal;
begin
result := 0;
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION, False, PID);
if hProcess <> 0 then
begin
GetExitCodeProcess(hProcess, Code);
result := Code;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ProcID: Cardinal;
begin
RunProcess('expand -r i:\foo.sy_ d.\foo.sys', SW_SHOWNORMAL, True, @ProcID);
ShowMessage(IntToStr(GetExitCodeExpand(ProcID)));
end;
Michael Ein Teil meines Codes würde euch verunsichern.
|
|
Zitat
|