stdin/stdout
-
Hallo,
ich war mir nicht sicher, ob ich es bei WinAPI oder C++ posten sollte,
also bitte nicht schlagen * g *.Ich programmiere zur Zeit eine eigene Kommandozeile nach Vorbild der Linux-Shell.
Dafür nutze ich die Windows-API^^.Natürlich wollte ich, dass auch normale Konsolenprogramme innerhalb meiner Konsole ausgeführt werden können.
Dazu müsste ich aber irgendwie nach stdin (bzw. GetStdHandle(STD_INPUT_HANDLE))
schreiben, um zum Beispiel WM_KEYDOWN oder WM_CHAR an das Programm weiterzuleiten.Andersherum müsste ich die stdout umbiegen, damit ich alle Programmausgaben in meinem Fenster anzeigen kann.
also müsste ich aus (denke ich zumindest) aus stdout (bzw. GetStdHandle(STD_OUTPUT_HANDLE))lesen können.außerdem umbiegen und des Zugriffs auf stdin und stdout wäre noch ein Problem.
bei ShellExecute sehe ich irgendwie keinen Weg die Handle umzulenken.
zudem würde ShellExecute, da mein Programm ja ein Windows-Programm ist, automatisch eine neue Konsole erstellen,
was ich ja eigentlich nicht möchte.
das selbe Problem besteht bei system();Somit hätten ich also 3 Fragen:
1.: wie biege ich die Handles um?
2.: wie greife ich anschließend auf sie zu? (auf stdin schreiben und von stdout lesen)
3.: wie verhindere ich die Erstellung eines neuen Konsolenfensters für Konsolenprogramme?Bin für jede Hilfe dankbar
MfG DrakoXP
-
-
danke, hab ich aber schon im unteren Thread gelesen...
Das Problem ist hier:
wie lenke ich die stdout / stdin eines anderen Programmes um?denn das Beispiel lenkt ja nur die eigenen Ausgaben um.
übrigens: in Konsolenprogrammen kann man ja auch die WinAPI verwenden...
( GetConsoleWindow(), SetConsoleCursorPosition(), blablabla )
da gibt es ja SetStdHandle(...).
Angenommen man würde per SetStdHandle die Handles auf bestimmte Dateien setzen
und dann per ShellExecute ein Konsolenprogrammstarten...
würden dann die umgelenkten Handles für das Konsolenprogramm übernommen?
Oder kann man SetStdHandle/GetStdHandle in Windows-Programmen gar nicht einsetzen (zum Beispiel weil effektlos)?außerdem fürchte ich, wird immer noch ein extra Konsolenfenster erzeugt, auch wenn ich die Handles umgelenkt habe.
-
Upps... da hab ich Dir dummerweise den falschen Link gepostet... nimm mal diesen hier:
http://support.microsoft.com/kb/190351/en-us
-
danke

ist genau, was ich gesucht hab