(Request) Console in C++

12/19/2011 20:29 The Steven#1
Hi,

kurz ne blöde frage :facepalm:

Wenn ich ne Console in C++ erstelle (CMD),
quasi mit color,title,echo off & am ende cls,
wie kann ichs dazu bringen dass man auch eine normale Eingabe machen kann anschliessend, ohne dass sich das Programm schliesst, bzw. mit Pause
im anschluss schliesst? Die Systembefehle usw weiß ich ja, nur meine Frage ist halt obs möglich ist, die normale cmd.exe ausm sys32 Ordner zu "Klonen" mit Hilfe von C++, quasi das gleiche wie cmd.exe nur mit anderen Farben, nem anderen Titel & ohne das Echo.
Am ende soll dann alles gecleart werden damit man die Commands eingeben kann, ins leere Fenster.

Beispiel: (Als CMD, welches normalerweise als C++ Datei sein sollte)
[Only registered and activated users can see links. Click Here To Register...]

PS: Brauche nur nen tipp, nicht füttern bitte :rolleyes:
PS²: Ich nutze das Buch C++ Von A-Z, sobalds ankommt (nächste Woche?)
Ist das zu empfehlen?

Danke schonmal!

Lg.
12/19/2011 20:47 MoepMeep#2
std::cin
12/19/2011 21:44 jacky919#3
Quote:
Originally Posted by MoepMeep View Post
std::cin
Ich glaub er meint die Konsole mit den ganzen Batchbefehlen.


Probiger mal:

system("title Coole Konsole");
system("cmd")

könnte klappen, bin mir aber unsicher
12/19/2011 21:46 The Steven#4
Okay, da kommen wir dem ganzen schon näher, danke!

So nun gehts weiter:

Wie erkennt das System das es sich hierbei um die cmd.exe commands handelt?

Als beispiel: "Dir"

Würde im CMD das aktuelle Verzeichniss anzeigen,
muss ich das ganze so auch eintragen, dass es auf den Befehl "Dir" per
Code:
system("dir");
alles anzeigt, oder gibt es da einen anderen weg?

Sonst müsste ich das ja mit allen Commands machen..

Lg

@Jacky danke, klappt.

Nur habe ich dann die normale Console, wie vorher auch..
Titel & Farbe ist da, was fehlt: @echo off & cls.

per
Code:
system("@echo off"); & system("cls");
scheints nicht zu klappen.

PS: Außerdem habe ich dann nicht den gewünschten Effekt, die Konsole mit C++ zu "Klonen" bzw. den Effekt mit C++ zu erreichen.
12/19/2011 22:10 MrSm!th#5
Meinst du im Grunde, dass du genau die Konsole hast, wie sie auch erscheint, wenn du cmd.exe ausführst (nur halt in anderen Farben etc.), sprich sie bleibt nach der Eingabe offen und man kann Befehle eingeben? Soll auch das aktuelle Verzeichnis angezeigt werden? (wenn cd nicht verwendet wird, ist es beim CMD ja C:\Windows\system32\)
12/19/2011 22:14 The Steven#6
Genau richtig,
nur das ganze hätte ich gerne selbst geschrieben in C++,
das versuche ich quasi grad:

Aufbauen der Console(Color, Title, Echo, Cls)
& Anschliessend soll eine Eingabe erlaubt sein, welche auf die cmd.exe Commands zugreifft.
(Ich habs per cin bereits versucht, das ist aber nicht das was ich brauche, eine Eingabe an sich ist ja nicht das Problem, sondern dass es die Commands der CMD.exe erkennt.)
Beispiel:

[Only registered and activated users can see links. Click Here To Register...]


Das als C++ Konsole.
12/20/2011 14:23 jacky919#7
könntest es so machen:

Code:
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
	/*
	hier farbe
	titel
	etc.
	*/
	
	while(1)
	{
		string cmd = "";
		cin >> cmd;
		system(cmd.c_str());
	}
	
	return 0;
}
12/20/2011 18:43 The Steven#8
Wunderbar, klappt bis auf dass der tchar Header fehlte, aber ein bischen eigen Werk sollte ja dabei sein! ;)


folgendes habe ich noch addiert damit die Fehler korrigiert waren:
Code:
#include <string>
#include <tchar.h>
Nun klappt alles wie ich es wollte, ich bedanke mich bei allen für die Hilfe und vorallem bei Jacky für die Idee mit dem Console In >> Cmd!

Lg
12/20/2011 18:49 MrSm!th#9
Hätte auch gereicht, das Programm auf MultiByte Zeichensatz umzustellen bzw. wstring zu nutzen.

edit:

nein halt, wieso tchar.h? o.O Der hat doch gar nix damit zu tun.
Allerhöchstens windows.h, der enthält doch system().
12/20/2011 19:17 xNopex#10
Code:
while(1)
Ih. Warte ich geh mal schnell mich übergeben.


Quote:
Allerhöchstens windows.h, der enthält doch system().
Ist sogar Teil des C-Standards, weswegen es genügen sollte "cstdlib" zu inkludieren.
12/20/2011 19:31 jacky919#11
system() ist doch Mitglied vom std namespace.

Ausserdem komisch, dass du noch mehr inkludieren mustest...
Bei mir hat bei MinGW iostream gereicht.
12/20/2011 19:44 xNopex#12
Quote:
system() ist doch Mitglied vom std namespace.
Leider ist das falsch.
12/20/2011 20:04 The Steven#13
Hm, stimmt mit windows + string funktionierts.

Hab jetzt das erreicht was ich wollte.

@ Smith, definiere "umstellen" ?

Danke & Lg
12/20/2011 20:16 jacky919#14
Quote:
Originally Posted by xNopex View Post
Leider ist das falsch.
Auf der Seite steht es doch oder irre ich mich?
[Only registered and activated users can see links. Click Here To Register...]
12/20/2011 20:26 xNopex#15
Meine Referenz sagte was anderes. Und ich habe mal rumprobiert: Es geht beides :) Ich ziehe meine dreiste Behauptung zurück.