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: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
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: 938
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: 2480
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.
Der Prozesseinstiegspunkt "SignaturLaden" in Signatur.dll konnte nicht gefunden werden.
compmgmt
 
Beiträge: 312
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4 | 
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: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
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: 2497
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
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.
Der Prozesseinstiegspunkt "SignaturLaden" in Signatur.dll konnte nicht gefunden werden.
compmgmt
 
Beiträge: 312
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4 | 
CPU-Target: i386 + x86_64
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

porpoises-institution
accuracy-worried