Private Const RAS_MAXENTRYNAME = 256
Private Const RAS_MAXDEVICENAME = 128
Private Const RAS_MAXDEVICETYPE = 16
Private Const RAS_RASCONNSIZE As Integer = 412
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
Private Declare Function RasHangUp Lib "rasapi32" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function RasEnumConnections Lib "rasapi32.dll" Alias "RasEnumConnectionsA" (lpRasConn As Any, lpcb As Long, lpcConnections As Long) As LongPublic Sub HangUp()
    Dim lpRasConn(255) As RasConn
    Dim lpcb As Long
    Dim lpcConnections As Long
    Dim hRasConn As Long
    Dim CodeReturn As Long
    Dim i As Long
    lpRasConn(0).dwSize = RAS_RASCONNSIZE
    lpcb = RAS_MAXENTRYNAME * lpRasConn(0).dwSize
    lpcConnections = 0
    CodeReturn = RasEnumConnections(lpRasConn(0), lpcb, lpcConnections)    If CodeReturn = ERROR_SUCCESS Then
       For i = 0 To lpcConnections - 1
          If Trim$(ByteToString(lpRasConn(i).szEntryName)) = Trim$(gstrISPName) Then
             hRasConn = lpRasConn(i).hRasConn
             CodeReturn = RasHangUp(ByVal hRasConn)
          End If
       Next i
    End If
End Sub
Public Function ByteToString(bytString() As Byte) As String
    Dim lngX As Long
    ByteToString = ""
    lngX = 0
    While bytString(lngX) = 0&
       ByteToString = ByteToString & Chr(bytString(lngX))
       lngX = lngX + 1
    Wend
End Function