Internet-verbindungs Protokoll
-
warum wird nix in die txt -File geschrieben??
dieses programm pingt alle 10 sek Google um zu erfahren ob der pc noch online ist wenn er nicht mehr online ist soll es den genauen zeitpunkt des ausfalls in die txt-datei schreiben nur tut es das leider nich#include <windows.h> #include <time.h> #include<iostream.h> #include<fstream.h> #include<string> void main() { int system(const char*); char szTitle[MAX_PATH]; GetConsoleTitle(szTitle, MAX_PATH); while(true) { if(!system("ping www.google.de -n 1")) { SYSTEMTIME ST; ShowWindow(FindWindow(0, szTitle), SW_HIDE); Sleep(10000); } else { ShowWindow(FindWindow(0, szTitle), SW_SHOWNORMAL); //zeigt window wieder an system("cls"); system("color 0C"); SYSTEMTIME ST; GetLocalTime(&ST); printf("\n Internetausfall um %02d:%02d:%02d Uhr am %02d.%02d.%04d\n",ST.wHour, ST.wMinute, ST.wSecond, ST.wDay, ST.wMonth, ST.wYear); char Time[500]; sprintf(Time,"\n Internetausfall um %02d:%02d:%02d Uhr am %02d.%02d.%04d\n",ST.wHour, ST.wMinute, ST.wSecond, ST.wDay, ST.wMonth, ST.wYear); ofstream output("Protokoll.txt");//hier is wo das problem!!!!!! output <<Time; Sleep(10000); } } }
-
Ich kenne mich mit C++ nicht unbdeingt aus, aber das kommt mir spanisch vor:
ofstream output("Protokoll.txt");
Ich kann mir nicht vorstellen, dass das kompiliert wird. Was ist denn das für eien Methode output von ofstream? BTW bei dir ist es ja noch nicht mal eine Methode der Klasse. Und wo gibst du denn den Dateinamen an, wo das landen soll?
-
1. ich könnte auch so schreiben
ofstream irgendwas("Protokoll.txt"); irgendwas <<Time;
das dürfte aber nix ändern
2.("Protokoll.txt");
ist der relative dateipfad zur exe-file
3.irgendwas<<Variable;
gibt die variable in die datei aus
4. es wird compiliert und zwar ohne probleme!!!korregiert mich wenn ich wo falsch liege aber ich dachte mir das funktioniert so oder?
-
Hm, OK.
Existiert die Datei schon? Wenn ja, gib mal den kompletten Pfad an.
-
Ich kenne mich mit system nicht so aus, aber könnte es sein, dass er gar nicht in den else-Block kommt (also wird das Fenster sichtbar)?
-
ne passt schon und ja das fenster wurde sichtbar es wurde alles im else block ausgeführt und nein die datei besteht noch nicht (was aber auch egal is,denn wenn sie bestünde würde sie einfach überschrieben) und meine lösung sieht so aus:
void main() { int system(const char*); char szTitle[MAX_PATH]; GetConsoleTitle(szTitle, MAX_PATH); ShowWindow(FindWindow(0, szTitle), SW_HIDE); ofstream out("Protokoll.html"); out <<"<html>"<<endl; out <<"<head>"<<endl; out <<"</head>"<<endl; out <<"<body bgcolor=""#000000"">"<<endl; SYSTEMTIME ST; GetLocalTime(&ST); char Time2[500]; sprintf(Time2,"um %02d:%02d Uhr am %02d.%02d.%04d",ST.wHour, ST.wMinute, ST.wDay, ST.wMonth, ST.wYear); out <<"<p><strong><font color=""#FF0000"" size=""3"" face=""Courier New, Courier, mono"">Verbindungs Protokoll gestartet: "<<Time2<<"</font></strong></p>"<<endl; out <<"<p><strong><font color=""#FF0000"" size=""5"">---------------------------------------------------------------------------------</font></strong></p>"<<endl; out<<"</body></html>"; while(true) { while(!system("ping www.google.de -w 10000")) { Sleep(1000); while(!system("ping www.yahoo.com -w 10000")) { Sleep(60000); } } GetLocalTime(&ST); char Time[500]; sprintf(Time,"um %02d:%02d Uhr am %02d.%02d.%04d",ST.wHour, ST.wMinute, ST.wDay, ST.wMonth, ST.wYear); out <<"<p><strong><font color=""#FF0000"" size=""3"" face=""Courier New, Courier, mono"">Internetverbindung getrennt: "<<Time<<"</font></strong></p>"<<endl; out << "</body></html>"; Sleep(60000); } }
-
Warum nimmst du eigentlich nicht InternetGetConnectedState
-
InternetCheckConnection is eine andere Möglichkeit:
#include <wininet.h> //... #pragma comment(lib,"wininet") //... HANDLE hFile; SYSTEMTIME Syst; DWORD dwConnectedState, dwNumberOfBytesWritten; char szBuffer[MAX_PATH], szConnectionName[50]; if (!InternetCheckConnection("http://www.google.de",FLAG_ICC_FORCE_CONNECTION,0)) { InternetGetConnectedStateEx(&dwConnectedState,szConnectionName, sizeof(szConnectionName),0); hFile = CreateFile("log.txt",GENERIC_WRITE,FILE_SHARE_WRITE,NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if (hFile != INVALID_HANDLE_VALUE) { GetLocalTime(&Syst); wsprintf(szBuffer,"%s: an error has occured on %d.%d.%d at %02d:%02d:%02d", szConnectionName,Syst.wDay,Syst.wMonth,Syst.wYear,Syst.wHour, Syst.wMinute,Syst.wSecond); WriteFile(hFile,(LPCVOID)szBuffer,lstrlen(szBuffer), &dwNumberOfBytesWritten,NULL); } CloseHandle(hFile); }
-
wow an die variante hatt ich auch noch nich gedacht danke shilo.
aber dumusst zugeben auf meine variante is es schneller programmiert und leichter verständlich
-
ausserdem wie lange wartet InternetCheckConnection bis es einen fehler in der connection angibt??? bie system(ping ...) kann ich mit -w die milisekunden angeben die es auf eine antwort wartet (also wenn das modem ziemlich ausgelastet ist)
-
In der Funktionsbeschreibung steht leider nichts darüber, aber es muss ein Default-Wert sein.