Esempio di come Connettersi e Disconnettersi da Internet

In un Modulo inserire:

'************************************************
'Dichiarazioni e costanti per Verifica Connessione di Accesso Remoto e Disconnessione di tutte le Connessioni
'************************************************

'Dichiarazioni delle funzioni RASAPI
Public Declare Function RasEnumConnections Lib "rasapi32.dll" Alias "RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long
Public Declare Function RasGetConnectStatus Lib "rasapi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long
Public Declare Function RasHangUp Lib "rasapi32.dll" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
Public lngResult As Long

'Costanti e tipi per le funzioni RASAPI
Public Const RAS_MAXENTRYNAME As Integer = 256
Public Const RAS_MAXDEVICETYPE As Integer = 16
Public Const RAS_MAXDEVICENAME As Integer = 128
Public Const RAS_RASCONNSIZE As Integer = 412

Public Type RasEntryName
dwSize As Long
szEntryName(RAS_MAXENTRYNAME) As Byte
End Type

Public 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

Public Type RasConnStatus
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS_MAXDEVICETYPE) As Byte
szDeviceName(RAS_MAXDEVICENAME) As Byte
End Type

'************************************************
'Routine di Verifica Connessione di Accesso Remoto
'************************************************

Public Function IsConnected() As Boolean
Dim TRasCon(255) As RasConn
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RasConnStatus

TRasCon(0).dwSize = 412
lg = 256 * TRasCon(0).dwSize
RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
If RetVal <> 0 Then
    MsgBox "ERROR"
    Exit Function
End If
Tstatus.dwSize = 160
RetVal = RasGetConnectStatus(TRasCon(0).hRasConn, Tstatus)
If Tstatus.RasConnState = &H2000 Then
    IsConnected = True
Else
    IsConnected = False
End If
End Function

'************************************************
'Funzione per disconnettere tutte le connessioni RAS aperte
'************************************************

Public Sub DisconnectAll()
Dim lngCurCon As Long
Dim lpRasConn(255) As RasConn
Dim lpcb As Long
Dim lngConnections As Long
Dim hRasConn As Long

lpRasConn(0).dwSize = RAS_RASCONNSIZE
lpcb = RAS_MAXENTRYNAME * lpRasConn(0).dwSize
lngConnections = 0
lngResult = RasEnumConnections(lpRasConn(0), lpcb, lngConnections)
If lngResult = ERROR_SUCCESS Then
    'Ogni connessione rilevata...
    For lngCurCon = 0 To lngConnections - 1
        hRasConn = lpRasConn(lngCurCon).hRasConn
    '...viene 'stroncata' tramite la funzione RasHangUp
        lngResult = RasHangUp(ByVal hRasConn)
    Next
End If
End Sub

'************************************************
'Routine di Connessione di Accesso Remoto
'************************************************

Public Sub ConnettiA(NomeConnessione As String)
Dim rtn As Long
rtn = Shell("RUNDLL32.EXE rnaui.dll,RnaDial " & NomeConnessione, vbHide)
SendKeys "{ENTER}", True
'Preme invio ed avvia la connessione
End Sub


Form d'esempio:

Inseriamo nel Form un Timer, 2 CommandButton ed una Label.

Proprietà da cambiare:

Command1.Caption="Connetti"
Command2.Caption="Disconnetti"
Label1.BorderStyle=1

Codice da inserire:

Private Sub Command1_Click()
'Ponendo che la Connessione di Accesso Remoto sia chiamata TiscaliNet
ConnettiA "TiscaliNet"
End Sub

Private Sub Command2_Click()
DisconnectAll
End Sub

Private Sub Form_Load()
Timer1.Interval = 500
Timer1.Enabled = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
DisconnectAll
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
If IsConnected = True Then
    Label1.Caption = "Sei Connesso"
Else
    Label1.Caption = "Non sei Connesso"
End If
End Sub

Testato su: Windows 98, Windows Me