Witam.
Udało mi się zamienić tą funkcję na c++ ale wynik jej działania no nie jest taki jak oczekuję może ktoś by mógł zrobić to "po swojemu" bo w sumie z pascala noga jestem i może gdzieś zrobiłem błąd.

function(...
var
done: Boolean;
czekajNaZakonczenie: Boolean;
info: TShellExecuteInfo;
begin
FillChar(info, SizeOf(info), #0);
info.cbSize := SizeOf(info);
info.fMask := SEE_MASK_NOCLOSEPROCESS;
info.lpVerb := PChar(''); //na przykład runas
info.lpFile := nazwaPliku;
info.lpParameters := parametry;
info.lpDirectory := katalog;
info.nShow := Show;
done := Boolean(ShellExecuteEx(@info));
if done then begin
if czekajNaZakonczenie then begin
while WaitForSingleObject(info.hProcess,100) = WAIT_TIMEOUT do begin
//tu można dodać na przykład application.ProcessMessage;
end;
done := GetExitCodeProcess(info.hProcess, DWord(Result));
end else begin
Result := 0;
end;
end;
if not done then Result := -1;
end;