Aufruf des Kommandointerpreters

vfl_freak

Premium-User
Guten Morgen,

in einem unserer C++-Serverprogramme wird mittels system ein Befehl an den Kommandointerpreter gesendet, um mit einem externen Programm mehrere PDF-Dateien zu einer Datei zu mergen.
C++:
// alle einzelnen PDFs zu einer Datei mergen und im DAVID-Pfad speichern
string sCmdMerge = "c:\\pdfmerge\\pdftk.exe ";
vector<string>::iterator aD;
for (aD = m_FaxAnhangNameVec.begin(); aD != m_FaxAnhangNameVec.end(); aD++)
{
	sCmdMerge += *aD;
	sCmdMerge += " ";
}
sCmdMerge += "output ";
sCmdMerge += strZielNameMerge;

const char *cAufrufMerge = sCmdMerge.c_str();
system( cAufrufMerge );

Das klappt soweit auch wunderbar! Leider poppt nun auf dem entsprechenden System, auf dem dies ausgeführt sehr regelmäßig für den Bruchteil einer Sekunde die DOS-Box auf, in der der der Befehl (quasi ja das CMD) ausgeführt wird. Dies wird halt als ein permanentes Flackern wahrgenommen.

Habe ich hier eine Chance, das Aufpoppen der Dos-Box zu unterdrücken?
Es gibt zwar für CMD die Option "/q" um die Befehlsanzeige auszuschalten, aber das dürfte mir hier ja auch nicht weiterhelfen, zumal ich nicht weiß, wie ich das hier einbauen soll.

Es wäre toll, wenn jemand hierzu eine zündende Idee hätte :)

Danke und Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

verzichte auf system() - mit CreateProcess() oder ShellExecute() gibt es Alternativen, die keine DOS-Box öffnen.

Gruß
MCoder
 
Zurück