vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: HTML/Internet/Netzwerk · Internet / Browser / IE   |   VB-Versionen: VB4, VB5, VB628.05.01
Internet-Verbindung trennen

Trennen einer bestimmten oder aller Internet-Verbindungen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  28.161 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

In unserem vorigen Tipp haben wir Ihnen gezeigt, wie man eine Internet-Verbindung programmgesteuert starten kann. Unser heutiger Tipp zeigt den umgekehrten Weg, d.h. Sie können entweder eine bestimmte oder oder alle aktiven Internet-Verbindungen programmgesteuert trennen.

' zunächst die benötigten API-Deklarationen
Private Declare Function InternetGetConnectedState Lib "wininet.dll" ( _
  ByRef lpdwFlags As Long, _
  ByVal dwReserved As Long) As Long
Private Declare Function InternetHangUp Lib "wininet.dll" ( _
  ByVal dwConnection As Long, _
  ByVal dwReserved As Long) As Long
 
Private Const DIAL_FORCE_ONLINE = 1
Private Const DIAL_FORCE_UNATTENDED = 2
 
Private Type RASCONN
  dwSize As Long
  hRasConn As Long
  szEntryName(256) As Byte
  szDeviceType(16) As Byte
  szDeviceName(128) As Byte
End Type
 
Private Declare Function RasEnumConnectionsA Lib "RasApi32.DLL" ( _
  lpRasConn As Any, _
  lbcp As Long, _
  lbcConnections As Long) As Long

Prüfen auf aktive Internet-Verbindungen
Zunächst möchten wir Ihnen eine Routine vorstellen, welche prüft, ob eine Internet-Verbindung aktiv ist. Soll auf eine ganz bestimmte DFÜ-Verbindung hin geprüft werden, geben Sie für den Parameter DFÜName den entsprechenden Verbindungsnamen an. Für den Parameter hWnd übergeben Sie das Fensterhandle des aktiven Formulars. Die Funktion liefert als Rückgabewert den Handle der Internet-Verbindung oder 0, wenn keine (oder nicht die im Parameter DFÜName angegebene) Verbindung besteht.

' Prüfen auf aktive Internet-Verbindungen
Public Function RASIsConnected(ByVal hWnd As Long, _
  Optional ByVal DFÜName As String = "") As Long
 
  Dim nConnected As Long
  Dim dwFlags As Long
  Dim lpRasConn(255) As RASCONN
  Dim lpcConnections As Long
  Dim lpcb As Long
  Dim i As Long
  Dim hRasConn As Long
  Dim szEntryName As String
 
  ' Anzahl aktiver Verbindungen
  nConnected = InternetGetConnectedState(dwFlags, 0)
  If (nConnected) Then
    ' Handle der Verbindung ermitteln
    lpRasConn(0).dwSize = 412
    lpcb = 256 * lpRasConn(0).dwSize
    RasEnumConnectionsA lpRasConn(0), lpcb, lpcConnections
 
    If DFÜName <> "" Then
      ' Prüfen, ob "DFÜName" in der Auflistung vorhanden
      For i = 0 To lpcConnections - 1
        szEntryName = StrConv(lpRasConn(i).szEntryName, _
          vbUnicode)
        szEntryName = Left$(szEntryName, _
          InStr(szEntryName, vbNullChar) - 1)
        If szEntryName = DFÜName Then
          hRasConn = lpRasConn(i).hRasConn
          Exit For
        End If
      Next i
    Else
      ' Handle der ersten Verbindung
      hRasConn = lpRasConn(0).hRasConn
    End If
  End If
 
  RASIsConnected = hRasConn
End Function

Online-Verbindung trennen
Geben Sie für DFÜ-Name einen bestimmten Verbindungsnamen an, wird eben diese DFÜ-Verbindung getrennt (sofern sie aktiv ist). Wird DFÜ-Name weggelassen oder ein Leerstring ("") angegeben, wird die in der Auflistung erste aktive Internet-Verbindung getrennt. Als kleines "Extra" können über die nachfolgende Funktion auch ALLE aktiven Online-Verbindungen getrennt werden. Ist dies erwünscht, geben Sie für den Parameter DisconnectAll den Wert True an. Die Funktion gibt True zurück, wenn sie erfolgreich ausgeführt werden konnte. Trat ein Fehler auf oder konnte die Verbindung nicht getrennt werden, wird als Rückgabewert False zurückgegeben.

' (bestimmte/alle) Internet-Verbindung(en) trennen
Public Function RASDisconnect(ByVal hWnd As Long, _
  Optional ByVal DFÜName As String = "", _
  Optional ByVal DisconnectAll As Boolean) As Boolean
 
  Dim nConnected As Long
  Dim dwFlags As Long
  Dim lpRasConn(255) As RASCONN
  Dim lpcConnections As Long
  Dim lpcb As Long
  Dim hRasConn As Long
  Dim i As Long
  Dim Result As Boolean
 
  Result = False
  If Not DisconnectAll Then
    ' (bestimmte) Verbindung trennen
    hRasConn = RASIsConnected(hWnd, DFÜName)
    If hRasConn <> 0 Then
      Result = (InternetHangUp(hRasConn, 0) = 0)
    End If
 
  Else
    ' Alle Verbindungen trennen
    nConnected = InternetGetConnectedState(dwFlags, 0)
    If (nConnected) Then
      lpRasConn(0).dwSize = 412
      lpcb = 256 * lpRasConn(0).dwSize
      RasEnumConnectionsA lpRasConn(0), lpcb, lpcConnections
 
      Result = True
      For i = 0 To lpcConnections - 1
        hRasConn = lpRasConn(i).hRasConn
        If InternetHangUp(hRasConn, 0) <> 0 Then _
          Result = False
      Next i
    End If
  End If
 
  RASDisconnect = Result
End Function

Dieser Tipp wurde bereits 28.161 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel