Seite 1 von 2

Eingabeaufforderung ansprechen

Verfasst: 01.08.2009 16:52
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)

Verfasst: 01.08.2009 16:59
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)

Verfasst: 01.08.2009 17:07
von Joel
Und was ist, wenn ich ind er Eingabeaufforderung ein Programm anspreche, das nicht wie shutdown.exe eigenständig ist?

Verfasst: 01.08.2009 17:09
von TomS
Hab's gerade gefunden^^ (s.o)

Verfasst: 01.08.2009 17:17
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")

Verfasst: 01.08.2009 17:23
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

Verfasst: 01.08.2009 17:42
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:

Verfasst: 01.08.2009 17:56
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?

Verfasst: 01.08.2009 18:01
von X360 Andy
Und wieso sollte man die cmd.exe umbennen ?
damit zerstört man doch ein teil des Systems....

Verfasst: 01.08.2009 18:09
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!