Private Const RAS_MAXDEVICETYPE As Long = 16
Private Const RAS_MAXDEVICENAME As Long = 128
Private Const RAS_MAXENTRYNAME As Long = 256
Private Const RAS_RASCONNSIZE As Long = 412
Private Const RASCS_DONE As Long = &H2000
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 Type RASCONNSTATUS
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS_MAXDEVICETYPE) As Byte
szDeviceName(RAS_MAXDEVICENAME) As Byte
End Type
Private Declare Function RasEnumConnections Lib "rasapi32.dll" Alias "RasEnumConnectionsA" (lpRasConn As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RasGetConnectStatus Lib "rasapi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasConn As Long, lprasconnstatusa As Any) As Long
Private Function [B]IsOnline[/B]() As Boolean
Dim Status As RASCONNSTATUS
Dim Index As Long
Dim lpRasConn(255) As RasConn
Dim lpcb As Long
Dim lpcConnections As Long
Status.dwSize = 160
lpRasConn(0).dwSize = RAS_RASCONNSIZE
lpcb = RAS_MAXENTRYNAME * lpRasConn(0).dwSize
If RasEnumConnections(lpRasConn(0), lpcb, lpcConnections) = 0 Then
For Index = 0 To lpcConnections - 1
RasGetConnectStatus lpRasConn(Index).hRasConn, Status
If Status.RasConnState = RASCS_DONE Then
IsOnline = True
Exit For
End If
Next
End If
End Function
Private Sub Form_Load()
MsgBox [B]IsOnline[/B]
End Sub