Ich muss eine https:// adresse (für REST) zugehen, und meiner etwas ältere D6 version kann das nicht.
Ich traue mich jetzt nicht auf Indy10 umzustellen, um nicht irgendwas zu zerstören.
Curl kann das, und ich kann auch problemlos Curl abrufen. Ich will aber gern die Statuscodes von Curl zurückhaben, also diese:
https://ec.haxx.se/usingcurl/usingcurl-returns
Wenn ich aber mit ShellExecute Curl starte, bekomme ich immer "42" ("alles iO"). Heißt das aber nicht nur, das Delphi Curl erfolgreich startet, aber was Curl dann macht ist Delphi unbekannt. Dann kann ich ablesen ob zB ich ein Falsches Parameter setze.
EDIT
Ich habe eine Beispiel gefunden, bei eine Frage über 7Zip:
Code:
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;
result := WAIT_FAILED;
exit;
end;
WaitForSingleObject(ProcessInfo.hProcess, 3000);
GetExitCodeProcess(ProcessInfo.hProcess, Result); // <<< here is where exit code is returned
end;
if ProcessInfo.hProcess <> 0 then
CloseHandle(ProcessInfo.hProcess);
if ProcessInfo.hThread <> 0 then
CloseHandle(ProcessInfo.hThread);
end;
Und wie ich das benutze:
Code:
rc2 := RunProcess('c:\utility\CURL\curl.exe' +
' ' + edtParameters.Text
, SW_HIDE, TRUE, @ProcID);