Questo lo uso in Delphi quindi dovrebbe andare tale e quale anche in Lazarus.
Var
SEInfo : TShellExecuteInfo;
parametri : string;
begin
FillChar(SEInfo, SizeOf(SEInfo), 0) ;
SEInfo.cbSize := SizeOf(TShellExecuteInfo) ;
with SEInfo do begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := 'nomeapplicazione.EXE';
parametri := '/a /b /c stringa';
lpParameters := PChar(parametri);
nShow := SW_HIDE; //SW_SHOWNORMAL;
end;
if ShellExecuteEx(@SEInfo) then begin
writeln('Errore: ' + IntToStr(GetLastError));
end;
PS: la sezione giusta sarebbe stata quella di Delphi.