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 verstehenChris
-
Es gibt 2 Verschiedenene Wege eine Telefonverbindung aufzubauen.
RAS
TAPIJenachdem 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