Problem mit cmd-Process beenden
-
Hallo,
Ich bin gerade dabei ein Programm zu schreiben dass mir einen "Ping" in eine Datei schreibt, und die Datei wird in C++ ausgegeben. Die Datei wird allerdings sofort von c++ ausgelesen, was heißt das immer der vorherige "Ping" ins C++ übertragen wird und nicht der aktuelle. Wie kann ich es programmieren das die Datei erst ausgelesen wird wenn das DOS-Fenster beendet ist.
Danke im voraus
Chrisi
-
Warum implementierst du die Ping Funktion nicht in dein C++ Programm ?
Stichwort Indy.Gruß Rainer
-
Das ist mein Quellcode:
edtEIPAdresse ist das Eingabefeld!
Was heißt direkt in C++ implementieren? Wie funktioniert das?
char EIPAdresse[20];
StrCopy (EIPAdresse,edtEIPAdresse->Text.c_str());
ShellExecute (Handle, "open", "e:\\win2k\\system32\\p.bat" ,EIPAdresse, NULL, SW_HIDE);
fstream f("C:\\test.txt",ios::out| ios::in);
char buffer[255];
if (f.good())
while (!f.eof())
{
f.getline(buffer,sizeof(buffer));
clientmemo->Lines->Add(buffer);
}
else
ShowMessage("Fehler beim öffnen der Datei!");
f.close();
}
{
char EIPAdresse[20];StrCopy (EIPAdresse,edtEIPAdresse->Text.c_str());
}
-
Chrisi112 schrieb:
Die Datei wird allerdings sofort von c++ ausgelesen, was heißt das immer der vorherige "Ping" ins C++ übertragen wird und nicht der aktuelle.
Laß das Programm einfach auf die neue Datei warten.
(nach SellExecute etwa so):ShellExecute (Handle, "open", "e:\\win2k\\system32\\p.bat" ,EIPAdresse, NULL, SW_HIDE); Sleep(1000); //Warte 10 Sekunden (oder doch länger?!)MfG
xy
-
Danke,
aber das hatte ich schon probiert, hat auch geklappt. Das gleiche mache ich aber auch mit "traceroute" und wenn der ins leere läuft dauert es sehr lange. Wenn dann c++ versucht die Datei zu öffnen bringt er jedesmal einen Fehler! Deswegen ist damit nicht möglich!!!
-
Ich würde die Datei nach dem Lesen löschen. Und beim nächsten Programmlauf existiert keine alte Datei mehr. Dann lasse ich das Programm auf die neue Datei warten (nicht ewig, sondern eine bestimmte Zeit), dann frage ich ab, ob die Datei schon existiert. Wenn ja, dann lese ich sie, wenn nicht dann nicht.
Mal so'ne Idee. Oder habe ich Dich falsch verstanden?!MfG
xy
-
Du hast mich richtig verstanden! Die Idee hatte ich auch schon, nur ich wußte nicht wie man sie umsetzt! Hast Du ein paar Befehle?
Chrisi
-
Andere Idee:
Chrisi112 schrieb:
Wie kann ich es programmieren das die Datei erst ausgelesen wird wenn das DOS-Fenster beendet ist.
Ich weiß nicht, ob Du es mit der Funktion "FindWindow" machen kannst. Einfach mal ausprobieren. Mit FindWindow abfragen, ob das DOS-Fenster noch da ist.
Versuche es mal damit, wenn es nicht funktioniert, dann schauen wir weiter, ok?
MfG
xy
-
Ansonsten gab es hier schon einmal ein ähnliches (gleiches?) Problem:
Auf einen Prozess wartenVielleicht hilft es Dir weiter.
MfG
xy
-
Danke erst einmal! Werde das ganze heute Abend einmal ausprobieren!!
Chrisi