Consolenbefehl ausführen

Für Fragen von Einsteigern und Programmieranfängern...

Consolenbefehl ausführen

Beitragvon DL3AD » 4. Nov 2017, 15:19 Consolenbefehl ausführen

Hallo,

ich möchte einen Consolenbefehl ausführen - das habe ich so gemacht.
Code: Alles auswählen
 
procedure TForm1.Button1Click(Sender: TObject);
var
  AProcess: TProcess;
begin
  AProcess:= TProcess.Create(nil);
  AProcess.CommandLine:= 'shutdown /s';//sollste ja auch unter Linux mit shutdown now funktionieren
  Aprocess.Execute;
  Aprocess.Free;
end;
 

Nun sagt er mir dass CommandLine veraltet ist - wie muss es denn aktuell gemacht werden ?

Fruß Frank
DL3AD
 
Beiträge: 300
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.6.4 FPC 3.0.2) und Debian 8 (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 32Bit
Nach oben

Beitragvon creed steiger » 4. Nov 2017, 17:40 Re: Consolenbefehl ausführen

da steht alles drin

https://www.freepascal.org/docs-html/fc ... ocess.html

Executable und Parameters sind deine neuen Freunde ;)
creed steiger
 
Beiträge: 935
Registriert: 11. Sep 2006, 21:56

Beitragvon wp_xyz » 4. Nov 2017, 17:47 Re: Consolenbefehl ausführen

DL3AD hat geschrieben:Nun sagt er mir dass CommandLine veraltet ist - wie muss es denn aktuell gemacht werden ?

Hier ist ein Beispiel ohne CommandLine.
wp_xyz
 
Beiträge: 2249
Registriert: 8. Apr 2011, 08:01

Beitragvon compmgmt » 4. Nov 2017, 19:48 Re: Consolenbefehl ausführen

Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
  AProcess: TProcess;
begin
  AProcess:= TProcess.Create(nil);
  {$ifdef mswindows}
    AProcess.Executable := GetEnvironmentVariable('comspec');
    AProcess.Parameters.Add('/c'); // oder "/k", wenn die CMD nach dem Ausführen geöffnet bleiben soll
    AProcess.Parameters.Add('shutdown -s'); // Hier der Befehl
  {$else}
    AProcess.Executable := '/bin/bash';
    AProcess.Parameters.Add('-c');
    AProcess.Parameters.Add('poweroff'); // Hier der Befehl
  {$endif}
  Aprocess.Execute;
  Aprocess.Free;
end;
Der Linux weg wurde von mir nicht explizit getestet, sollte aber funktionieren. Der Windows weg funktioniert auf jeden Fall.
Beim Laden der Signatur ist Systemfehler 0 (ERROR_SUCCESS) aufgetreten
compmgmt
 
Beiträge: 293
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro + Linux Manjaro 17.0.2 | Lazarus 1.6.4 | FPC 3.0.2 | 
CPU-Target: i386 + x86_64
Nach oben

Beitragvon DL3AD » 5. Nov 2017, 11:04 Re: Consolenbefehl ausführen

... Danke für eure Tipps.

Nun funktioniert es - musste noch sudo mit einfügen.
DL3AD
 
Beiträge: 300
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.6.4 FPC 3.0.2) und Debian 8 (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 32Bit
Nach oben

Beitragvon Socke » 6. Nov 2017, 12:17 Re: Consolenbefehl ausführen

Warum startet ihr ein Programm um ein Programm zu starten?
Unter Windows heißst das Programm "C:\Windows\System32\shutdown.exe".
Für Linux muss man ebenfalls nicht die Bash (oder eine andere Shell) bemühen, sondern kann /sbin/shutdown direkt als Programm angeben (oder /usr/bin/sudo).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2385
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon compmgmt » 7. Nov 2017, 18:11 Re: Consolenbefehl ausführen

Socke hat geschrieben:Warum startet ihr ein Programm um ein Programm zu starten?
Unter Windows heißst das Programm "C:\Windows\System32\shutdown.exe".
Weil er CMD-Befehle ausführen wollte. Natürlich sind shutdown, reg, mmc usw. externe Programme, die man direkt ausführen kann, andere Befehle jedoch nicht. Im Fall von shutdown würde man auch direkt die exe starten können, bei anderen Dingen jedoch nicht.
Beim Laden der Signatur ist Systemfehler 0 (ERROR_SUCCESS) aufgetreten
compmgmt
 
Beiträge: 293
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro + Linux Manjaro 17.0.2 | Lazarus 1.6.4 | FPC 3.0.2 | 
CPU-Target: i386 + x86_64
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
porpoises-institution
accuracy-worried