VB-Homepage Tipp 417

Alle offenen RAS Verbindungen trennen

Eines von den Themen, die bisher eher weniger in der Tipp DB vorkamen, sind Tipps zu DFÜ / RAS. Und so wollen wir das Manko mit den nächsten beiden Tipps etwas abstellen. Im folgenden Tipp soll es um das Trennen aller geöffneten RAS Verbindungen gehen.

1. Allgemein/Deklarationen
Private Declare Function RasEnumConnections Lib "rasapi32.DLL" Alias "RasEnumConnectionsA" (lpRasConn As Any, lpcb As Long, lpcConnections As Long) As Long

Private Declare Function RasHangUp Lib "rasapi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
Const RAS_MAXENTRYNAME As Integer = 256
Const RAS_MAXDEVICETYPE As Integer = 16
Const RAS_MAXDEVICENAME As Integer = 128
Const RAS_RASCONNSIZE As Integer = 412
Const ERROR_SUCCESS = 0

Private Type RasConn
dwSize As Long
hRasConn As Long
szEntryName(RAS_MAXENTRYNAME) As Byte
szDeviceType(RAS_MAXDEVICETYPE) As Byte
szDeviceName(RAS_MAXDEVICENAME) As Byte
End Type

2. Allgemein/TerminateRAS
Sub TerminateRAS()
Dim i As Long
Dim RasConn(255) As RasConn 'max 255 Verbindungen
Dim structSize As Long
Dim ConnectionsCount As Long
Dim ret As Long

'Füllen der RasConn Struktur mit den Daten aller offenen RAS Verbindungen
RasConn(0).dwSize = RAS_RASCONNSIZE
structSize = RAS_MAXENTRYNAME * RasConn(0).dwSize
ret = RasEnumConnections(RasConn(0), structSize, ConnectionsCount)

'Beenden aller offenen RAS Verbindungen
If ret = ERROR_SUCCESS Then
   For i = 0 To ConnectionsCount - 1
      ret = RasHangUp(RasConn(i).hRasConn)
   Next
End If

End Sub

3. Funktionsaufruf
TerminateRAS

Wenn Sie ermitteln wollen, wieviel Verbindungen geöffnet sind,
fragen Sie einfach ConnectionsCount ab.

Tipp-Download

Quelle :

Zurück zur Übersichtsseite