beliebige Tel.verbindung trennen



  • Suche nach einer Möglichkeit,mit MFC,
    eine bestehende Modemverbindung zu einer Tel.Nr.
    zu trennen(nicht Internet !).
    Für Internetverbindungen geht das ja mit InternetDialHangup
    sehr gut.
    Muß ich mir RAS ansehen ?? Hab da null Ahnung von und finde
    es recht schwer zu verstehen 😢

    Chris



  • Es gibt 2 Verschiedenene Wege eine Telefonverbindung aufzubauen.

    RAS
    TAPI

    Jenachdem welche verbindung besteht musst du die verschiedenen Befehle verwenden.
    Ist aber im Grunde alles in der MSDN gut beschrieben.



  • Hallo Unix-Tom,

    ich wollte den Verbindungsabbau auf eine Verbindung
    anwenden, welche ich nicht selbst erstellt habe.
    Sollte so wie ein 0190-Warner einfach alle Verbindungen
    trennen, die nicht ins Internet gehen.
    Wenn ich das bei RAS richtig gesehen habe,dann muß
    ich dort ja den Namen der zu schließenden Verbindung
    angeben oder ?
    Nur ich habe dann ja praktisch keinen Namen vergeben,
    also kann ich mich da nicht drauf beziehen.

    Chris



  • Hm, guck mal bei Codeguru da gibt es sowas wie enumRas, zählt dir alle Verbindungen auf.

    Devil



  • Hab mal gesucht aber nichts gefunden, wobei
    mir ein Licht aufgegangen wäre.
    Gibts nicht was einfaches brutales an Code,
    daß radikal alle Verbindungen zum/vom Rechner
    trennt?

    Bei RAS muß ich doch immer wissen welchen Bezeichner
    die zu beendende Verbindung hat oder ?

    Chris



  • RasEnumConnections liefert dir die Handles aller Verbindungen.
    Mit RasHangUp solltest du dann alle beenden können.

    MfG Spacelord 🙂



  • Nicht vergessen zu warten nach dem Hangup bwz. Das RAS-Handle auf ERROR_INVALID_HANDLE checken da Windows etwas Zeit braucht um die Verbindung aufzulegen. Insebsonders wen man wieder rauswählen möchte wäre der Port des RAS-Devices noch nicht frei.



  • Hi,

    Unix-Tom, kannst du mir bitte an dem Code unten mal
    zeigen, wie ich mit ERROR_INVALID_HANDLE arbeiten muß?
    Habe den Code unten in einem Timer laufen und mit z.B.
    Sleep(3000) zu warten ist da nicht so der Hit.

    bool bOk = false;
       RASCONN ras[20];
       DWORD dSize,dNumber,dCount;
    
       ras[0].dwSize = sizeof(RASCONN);
       dSize = sizeof( ras );
    
       // Aktive RAS-Verbindung holen
       if( RasEnumConnections( ras, &dSize, &dNumber ) == 0 )
       {
          bOk = true;
    
          for( dCount = 0; dCount < dNumber; dCount++ )
          {
             // Verbindung trennen
             if( RasHangUp(ras[dCount].hrasconn) != 0 )
             {
                bOk = false;
                break;
             }
          }
       }
    

    Wäre nett.

    Chris



  • RASCONNSTATUS rasStatus;
        DWORD dwRet = NULL;
        MSG msg;
        CTime t1 = CTime::GetCurrentTime();
        CTimeSpan ts;
        while (dwRet != ERROR_INVALID_HANDLE)
        {
            while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
            Sleep(0);
            dwRet = RasGetConnectStatus(hrasConn, &rasStatus);
            ts = CTime::GetCurrentTime() - t1;
            if (ts.GetTotalSeconds() > 3) break;
        }
    


  • Danke.

    Läuft spitze !

    Chris


Anmelden zum Antworten