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 LongPublic Const RAS95_MaxEntryName = 256
Public Const RAS95_MaxDeviceType = 16
Public Const RAS95_MaxDeviceName = 32Public Type RASCONN95
    dwSize As Long
    hRasCon As Long
    szEntryName(RAS95_MaxEntryName) As Byte
    szDeviceType(RAS95_MaxDeviceType) As Byte
    szDeviceName(RAS95_MaxDeviceName) As Byte
End TypePublic Type RASCONNSTATUS95
    dwSize As Long
    RasConnState As Long
    dwError As Long
    szDeviceType(RAS95_MaxDeviceType) As Byte
    szDeviceName(RAS95_MaxDeviceName) As Byte
End TypePublic Function IsConnected() As Boolean '函数IsConnected返回连通的状态,如果为True则表示已连通
    Dim TRasCon(255) As RASCONN95, lg As Long, lpcon As Long, RetVal As Long, Tstatus As RASCONNSTATUS95
    TRasCon(0).dwSize = 412
    lg = 256 * TRasCon(0).dwSize
    RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
    If RetVal <> 0 Then
        MsgBox "错误"
        Exit Function
    End If
    Tstatus.dwSize = 160
    RetVal = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)
    If Tstatus.RasConnState = &H2000 Then
        IsConnected = True
    Else
        IsConnected = False
    End If
End Function
-----------------------------------------------
以上是从网上学的关于判断网络是否联通的函数,但我实在是看不懂其中原理
在使用时:
当我用adsl上网时 判断是正确的
但当我通过路由上网时 判断总是False
请问 这个函数是判断网路连通状态的 还是判断adsl状态的?

解决方案 »

  1.   

    RAS是Remote Access System的缩写,意为:远程访问服务,主要用来配置企业的远程用户对企业内部网络访问,包括拨号访问和vpn方式。
    RasEnumConnections 只是列举所有的RAS连接,你用路由方式上网,不用拔号,当然不能用这种方法了
      

  2.   

    试试这个
    Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long
    Dim sConnType As String * 255Public Function CheckInternet() As Boolean
        Dim Ret As Long
        Ret = InternetGetConnectedStateEx(Ret, sConnType, 254, 0)
       ' MsgBox sConnType
        If Ret = 1 Then
            CheckInternet = True
        Else
            CheckInternet = False
        End If
    End Function
      

  3.   

    我看还是直接向GOOGLE服务器发个GET请求来得稳当快速,哈哈~~~~~