Konsolenfenster bei system() obwohl windows forms?
-
Hallo
Ich hab ein Programm, welches unter anderem auch einmal einen Systemcall system() durchführt. Ich habe dies mit Windows Forms (API) programmiert.
Nun hab ich ein Problem:
Immer wenn in dem Programm der Systemcall durchgeführt wird, sehe ich kurz das Konsolenfenster. Das sieht einfach grausam aus und passt nicht zu dem schönen Forms-Programm.Gibt es da ne Möglichkeit das Konoslenfenster weg zu bekommen, also dass es erst gar nicht angzeigt wird?
Danke
LG
-
Verwende ShellExecute oder CreateProcess...
-
Hallo,
Ja das hab ich mir natürlich schon gedacht, aber das Problem liegt darin, dass ich über _popen fahre.
char* pipe (char *command) { char buffer[10000]; FILE *pPipe; if( (pPipe = _popen( command, "rt" )) == NULL ) { exit( 1 ); } while(!feof(pPipe)) { if( fgets(buffer, 128, pPipe ) != NULL ) { strncat(pipe_return, buffer, strlen(pipe_return)-1); } } _pclose( pPipe ); }Und der Befehl wird ja da über _popen() abgesendet, und das kann ich nicht gut mit ShellExecute ersetzen oder?
-
Und der Befehl wird ja da über _popen() abgesendet, und das kann ich nicht gut mit ShellExecute ersetzen oder?
Doch, genau wie Jochen gesagt hat.
Simon
-
Warum verwendest Du _popen, wenn Du ein *Windows* Programm startest? Es macht doch nur für "Consolen* Programme sinn..., oder?
-
Jochen Kalmbach schrieb:
Warum verwendest Du _popen, wenn Du ein *Windows* Programm startest? Es macht doch nur für "Consolen* Programme sinn..., oder?
öh wo steht dass ich kein Konsolen Befehl verwende?
Es steht ja, dass mein Programm einen Sys-Call macht.
Warum ich _popen() verwende? DAmit ich die Ausgabe des Befehls mitbekomme!Eben z.B. von dir.
und darum muss ich das doch durch _popen() senden oder?
Also kann ich doch net einfach ShellExecute schreiben, denn da würde ich das Ergebnis des Befehles net mitbekommen, oder irr ich mich jetzt?
-
Dieser Artikel aus der MSDN dürfte was für dich sein: http://support.microsoft.com/kb/q190351/
-
_popen ist der absolut falsche Weg. popen startet mit cmd.exe /C zwingend eine neue Console. Dadurch erscheint auch das Fenster.
Wenn Du direkt das Programm starten willst solltest Du den Artikel lesen, den "Der freundliche Helfer" Dir angegeben hat.Alle CRT Funktionen wie _popen, system etc. verwenden CMD.EXE oder die in COMSPEC angegebene Shell um den Befehl auszuführen.
-
Wenn er wirklich WindowsForms macht, ist es doch eine C++/CLI-Anwendung.
Da gibt es doch mit der Process-Klasse alles was man braucht um eine andere Anwendung zu starten und deren Ausgabe umzuleiten ...
-
Da gebe ch Dir recht, wenn es sich um C++/CLI handelt. Dann ist das Ganze aber auch im falschen Forum gelandet.