Gå til innhold

Anbefalte innlegg

Skrevet

Jeg trenger en kode for å:

- kjøre et program

- vente til programmet er ferdig kjørt

- få tak i returverdien (errorlevel) og hvis errorlevel <> 0 få tak i det programmet skrev til stdout

 

Hvordan skal jeg gjøre dette?

Videoannonse
Annonse
Skrevet

Du kan selvfølgelig bruke CreateProcess( )-windows-funksjonen. Den lar deg route om stdout for programmet.

 

JCL har noen funksjoner som gjør dette enklere for deg.

 

-Vegar

Skrevet

Jeg ville helst at programmet mitt skulle være cross-platform, men det får gå. Uansett så går jeg for å skrive en bat fil som gjør det som skal gjøres og kjøre den isteden (ShellExecute). Det tar ikke så lang tid å lage.

Skrevet

Men arrg da, når jeg bruker ShellExecute på bat-fila så åpner den sitt eget terminalvindu. Hvordan kan jeg hindre det? Den skal selvfølgelig bruke programmets terminalvindu.

Skrevet (endret)

Virker ok:

{--------------------------------------------------------------}
unit Shell;

interface
procedure Run(Fn: string);

implementation
uses
  Windows;

procedure Run(Fn: string);
var
  si: STARTUPINFO;
  pi: PROCESS_INFORMATION;
begin
  GetStartupInfo(si);
  CreateProcess(PChar(Fn), '', nil, nil, true, 0, nil, nil, si, pi);
  WaitForSingleObject(pi.hProcess, 10000);
end;


end.

Endret av tsg1zzn

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...