Eingabeaufforderung ansprechen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Eingabeaufforderung ansprechen

Beitrag von Joel »

Wie kann ich die Eingabeaufforderung (cmd.exe) ansprechen. Also an den cmd z.B. shutdown senden.

Mein versuch klappt leider nicht:

Code: Alles auswählen

RunProgram("cmd.exe", "shutdown", "C:\Windows", 0, 0)
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Shutdown erwartet ja auch Parameter. Außerdem ist es ein eigenständigs Programm.

Code: Alles auswählen

RunProgram("shutdown.exe", "-i", "C:\Windows", 0, 0) ; -i  
;Zeigt eine grafische Benutzeroberfläche an (muss die erste Option sein). 
EDIT:

Für jeden beliebigen Befehl muss /k übergeben werden.
Oder /c. Dann schließt sich die Console.

Code: Alles auswählen

RunProgram("cmd.exe", "/k color 0b", "C:\Windows", 0, 0)

Code: Alles auswählen

RunProgram("cmd.exe", "/c shutdown -i", "C:\Windows", 0, 0)
Zuletzt geändert von TomS am 01.08.2009 17:09, insgesamt 1-mal geändert.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Und was ist, wenn ich ind er Eingabeaufforderung ein Programm anspreche, das nicht wie shutdown.exe eigenständig ist?
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Hab's gerade gefunden^^ (s.o)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Joel hat geschrieben:Und was ist, wenn ich ind er Eingabeaufforderung ein Programm anspreche, das nicht wie shutdown.exe eigenständig ist?

Code: Alles auswählen

ImportC "msvcrt.lib"
  system(cmd.p-ascii)
EndImport 

OpenConsole()
System("dir c:")
System("pause")
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

ts-soft hat geschrieben:
Joel hat geschrieben:Und was ist, wenn ich ind er Eingabeaufforderung ein Programm anspreche, das nicht wie shutdown.exe eigenständig ist?

Code: Alles auswählen

ImportC "msvcrt.lib"
  system(cmd.p-ascii)
EndImport 

OpenConsole()
System("dir c:")
System("pause")

Code: Alles auswählen

RunProgram("cmd.exe", "/c color f9 & dir C: & pause ", "C:\Windows", 0, 0)
Was davon jetzt besser ist, weiß ich nicht. Kannst ja dann selber entscheiden.
Oder irgendjemand, der sich mit Windows auskennt, macht meine Methode nieder :P
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

TomS hat geschrieben:

Code: Alles auswählen

RunProgram("cmd.exe", "/c color f9 & dir C: & pause ", "C:\Windows", 0, 0)
Was davon jetzt besser ist, weiß ich nicht. Kannst ja dann selber entscheiden.
Oder irgendjemand, der sich mit Windows auskennt, macht meine Methode nieder :P
Besser so:

Code: Alles auswählen

RunProgram(GetEnvironmentVariable("COMSPEC"), "/c color f9 & dir C: & pause ", "C:\Windows", 0, 0)
:wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

>Besser so:

Für den Fall, dass jemand seine cmd.exe umbenannt hat, oder System32 nicht in der Path-Variable steht, oder was?
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Und wieso sollte man die cmd.exe umbennen ?
damit zerstört man doch ein teil des Systems....
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

TomS hat geschrieben:>Besser so:

Für den Fall, dass jemand seine cmd.exe umbenannt hat, oder System32 nicht in der Path-Variable steht, oder was?
Für den Fall das jemand eine ältere Windows-Version nutzt und cmd.exe
command.com heißt :mrgreen:

Man sollte grundsätzlich solche Dinge per API ermitteln, es läßt sich nämlich
fast alles ändern und umgenannte cmd.exe zur Erhöhung der Sicherheit sind
keine Seltenheit!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten