jokey2
Erfahrenes Mitglied
Du kannst dem VS sagen, welche Argumente dem Programm beim Debuggen übergeben werden sollen. Dazu gehst Du im Menü auf Projekt->Eigenschften von <Projektname>. Im folgenden Dialog wählst Du Deine Debug-Konfiguration (die ist normalerweise schon ausgewählt, wenn sie die aktive Konfiguration ist). Im linken Teil wählst Du unter 'Konfigurationseigenschaften' den Punkt 'Debuggen' aus. Dann kannst Du im rechten Teil in der Zeile 'Befehlsargumente' Deine Parameter angeben. Die werden dann bei jedem Debug-Start Deinem Programm übergeben.
Zu Deinen Fragen:
1.: Das dürfte, wenn überhaupt, nur sehr schwierig machbar zu sein. Du bräuchtest ein HANDLE auf die Console und müßtest die Farbinformationen ihres Buffers abfragen. Du hast zwar das Prozesshandle, aber ob das auch das Konsolenhandle ist weiß ich nicht.
2.: Dazu müßtest Du eine zweite Pipe erzeugen und damit auch noch das InputHandle füttern:
Dann müßtest Du noch einen 2. Thread erzeugen, der auf gesendete Eingaben (mit recv) wartet und diese in das Schreib-Ende der Eingabe-Pipe schreibt. So bekommt der Prozess diese Eingaben.
Alles in Allem sieht das schon mehr aus wie ein Telnet- oder SSH-Terminal. Bei einem solchen könnte dann auch das mit der farbigen Ausgabe klappen.
Zu Deinen Fragen:
1.: Das dürfte, wenn überhaupt, nur sehr schwierig machbar zu sein. Du bräuchtest ein HANDLE auf die Console und müßtest die Farbinformationen ihres Buffers abfragen. Du hast zwar das Prozesshandle, aber ob das auch das Konsolenhandle ist weiß ich nicht.
2.: Dazu müßtest Du eine zweite Pipe erzeugen und damit auch noch das InputHandle füttern:
Code:
bOK = CreatePipe(&hReadOutPipe, &hWriteOutPipe, &sa, 1048576);
if(!bOK)
{
//FEHLER
dwError = GetLastError();
bOK = FALSE;
goto PROCESS_END_NOPIPE;
}
bOK = CreatePipe(&hReadInPipe, &hWriteInPipe, &sa, 1048576);
if(!bOK)
{
//FEHLER
dwError = GetLastError();
bOK = FALSE;
goto PROCESS_END_NOINPIPE;
}
//Pipes eintragen
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdInput = hReadInPipe; //Lese-Ende der Eingabe-Pipe an Prozess
si.hStdOutput = hWriteOutPipe; //Schreib-Ende der Ausgabe-Pipe an Prozess übergeben
si.hStdError = hWriteOutPipe; //Schreib-Ende der Ausgabe-Pipe an Prozess übergeben
si.wShowWindow = SW_SHOWMINNOACTIVE;
Alles in Allem sieht das schon mehr aus wie ein Telnet- oder SSH-Terminal. Bei einem solchen könnte dann auch das mit der farbigen Ausgabe klappen.