Genau die Zeit beim Einwählen ins Internet loggen



  • ich merk schon, ich habe die frage falsch gestellt. die umsetzung der zeit-funktionen, etc. sind kein problem. die eigentliche frage zielt dahin, dass das programm automatisch im hintergrund laufend bei jedem einloggen ins internet die zeit nehmen soll. ihr habt alles beantwortet, nur eben nicht die eigentliche sache, wie das Programm herausfindet, wann man sich über die DFÜ-Verbindung einloggt.



  • Achso... Also dann sag ich dir mal was ich weiß:

    Ich hab KEINE AHNUNG!

    sry



  • Das ist ein WinAPI Probelm...

    da wir allerdings hier völlig falsch lagen und der thread damit "zugemüllt" ist, bitte ich dich iim WinAPI-Forum neu zu posten, denn ein Verschieben lohnt sich nichtmehr. Aber natürlich nicht ohne vorher die Suchfunktion benutzt zu haben (o;

    -junix



  • hi,
    wenns dir nur um DFÜ geht, hab ich eine Komponente für dich! Muss mal sehen! Melde dich mal unter sulfrian@gmx.net wenn du Interesse hast! Und wenn du auch DSL oder sowas überwachen willst musst du einfach alle paar Sekunden einen Ping schicken und überprüfen ob eine I-Net-Adresse erreichbar ist! Such mal nach RAS (^=DFÜ) und PING!

    MFG

    Alexander Sulfrian



  • Ich habe die Indy-Komponenten mir heruntergeladen. Hat damit jemand schon erfahrung. Mir sieht es nämlcih so aus, als könnte diese die Aufgabe lösen.

    Hat jmd. ein Beispiel dafür oder kennt die richtige Komponente?



  • Original erstellt von <tasadar>:
    Mir sieht es nämlcih so aus, als könnte diese die Aufgabe lösen.

    Das bezweifle ich, mir ist keine entsprechende Indy-Komponente bekannt.



  • Hi,

    ich wüßte ein Lösung, jedoch ist dies auch keine ideal Lösung. Also aus einem C++ Programm eine Internetverbindung herzustellen stellt mittels der Inet API kein großes Problem dar.

    Wenn man z.b. sich mit der Standart Verbindung connecten wil reicht folgender Code:

    InternetAutodial(INTERNET_AUTODIAL_FORCE_UNATTENDED,0);

    Vorher muss jedoch die wininet.h mit einbegunden werden und die zugehörige LIB Datei.

    Anstatt mittels eines Doppelklick auf die DFÜ Verbindung startest du nun einfach dein Programm. Jetzt bist du im Internet und du kannst deine Zeit speichern.

    Schließlich musst du nur, wenn du aus dem Internet rausgehst das Programm wieder schließen, wobei die zusätzlich den Zeitpunkt der Schließung speichern könntest.

    Vielleicht wäre dies ja ne Möglichkeit für dich.

    philipp



  • Hi tasadar

    Ich hab' mal was im WEB gefunden - ka wie, aber es funzt!

    bool TForm1::GetInternetConnected(TStrings* pStrings)
    {
    bool blRetVal; // Rückgabewert
    if(pStrings)
    if (pStrings->Count>1)
    pStrings->Clear();

    // WININET.DLL laden:
    HANDLE hWinInet = LoadLibrary("WININET.DLL");
    if(hWinInet == NULL)
    {
    if(pStrings)
    pStrings->Add("Fehler: WININET.DLL konnte nicht geladen werden !");
    return false;
    }

    // Zeiger auf die Funktionen besorgen:
    PF_INETGETCONNECTEDSTATE pfInternetGetConnectedState =
    (PF_INETGETCONNECTEDSTATE) GetProcAddress(
    hWinInet, "InternetGetConnectedState");
    if(pfInternetGetConnectedState == NULL)
    {
    if(pStrings)
    pStrings->Add("Fehler: Bestimmung der Adresse der Funktion "
    "InternetGetConnectedState() fehlgeschlagen !");
    if(hWinInet) FreeLibrary(hWinInet);
    return false;
    }

    // Verbidungsstatus abfragen:
    DWORD dwFlags;
    blRetVal = pfInternetGetConnectedState(&dwFlags, 0);
    if(blRetVal && pStrings)
    {
    pStrings->Add("Inter- Intranet-Verbindung besteht !");
    if (dwFlags & INTERNET_CONNECTION_LAN)
    pStrings->Add("LAN-Verbindung");
    if (dwFlags & INTERNET_CONNECTION_MODEM)
    pStrings->Add("Aktive Modem-Verbindung");
    if (dwFlags & INTERNET_CONNECTION_PROXY)
    pStrings->Add("Verbindung über einen Proxy-Server");
    }
    else if(pStrings) pStrings->Add("Keine Inter- /Intranetverbindung!");

    // Aufräumen:
    if(hWinInet) FreeLibrary(hWinInet);

    return blRetVal;
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::ICTTimer(TObject *Sender)
    {
    GetInternetConnected(Memo1->Lines);
    }
    //---------------------------------------------------------------------------
    Per Timer wird alle 1s der Tex in 'nem TMemo aktualisiert! 😉



  • Hallo,

    mit diesen Code wird jedoch nur überprüft ob eine Internet Verbindung besteht. Jedoch wäre diese Lösung auch nicht die beste, da ja dann die Anwendung permanent überwachen muss, ob die Verbindung da ist.

    Die Funktionen können aber leichter beim statischen laden der DLL geladen werden.

    Laut MSDN, ich weiß die Seite nicht mehr genau, steht, dass die Inet API Funktionen, die einem sagen ob eine Verbindung existiert oder nicht, nicht immer korrekt arbeiten. In diesem Fall kann man eine weitere Inet API Funktion zur Hilfe nehmen und prüfen ob die Verbindung dann auch funktioniert.

    Gruß Philipp



  • Original erstellt von Philipp von der Born:
    **

    mit diesen Code wird jedoch nur überprüft ob eine Internet Verbindung besteht. ....
    **

    Ich denke tasadar will genau den Status (im Hintergrund) ueberwachen?

    Immer wenn Zustand "Verbindung besteht" und "Verbindung besteht nicht" wechselt nen entsprchenden Eintrag in Log- datei schreiben. 😉

    Ich hatte im Timer nur einfach den Zustand protokolliert, ohne Auswertung.

    Bei mir testet das Teil Internet und Intranetverbindung! 😉

    Statisch laden ist natuerlich besser!!! War nur so'n Test fuer die Funktion aus dem WEB. 🙄


Anmelden zum Antworten