Dim eR As EIGCInternetConnectionState
Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" _
        Alias "InternetGetConnectedStateExA" _
        (ByRef lpdwFlags As Long, _
        ByVal lpszConnectionName As String, _
        ByVal dwNameLen As Long, _
        ByVal dwReserved As Long _
        ) As LongPrivate Enum EIGCInternetConnectionState
        INTERNET_CONNECTION_MODEM = &H1&
        INTERNET_CONNECTION_LAN = &H2&
        INTERNET_CONNECTION_PROXY = &H4&
        INTERNET_RAS_INSTALLED = &H10&
        INTERNET_CONNECTION_OFFLINE = &H20&
        INTERNET_CONNECTION_CONFIGURED = &H40&
End Enum
Private Sub TestOnline()
Dim sMsg As String
Dim sName As String
Dim bConnected As Boolean
Dim bOK As Boolean
Dim HyperJump
Dim sWEB As String'检测是否已经以及使用什么方法连接到Internet
bConnected = InternetConnected(eR, sName)
'显示连接名称
If sName = vbNullString Then sName = "空"
If bConnected Then
    sMsg = "网络已连接,连接名称:" & sName & vbCrLf
Else
    sMsg = "尚未连接网络,连接名称:" & sName & vbCrLf
End If
'根据获得的结果输出
If (eR And INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM Then
    sMsg = sMsg & "本机使用modem连接到Internet."
ElseIf (eR And INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN Then
    sMsg = sMsg & "本机使用内部网连接到Internet."
ElseIf (eR And INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY Then
    sMsg = sMsg & "本机使用代理服务器连接到Internet."
End If
If (eR And INTERNET_RAS_INSTALLED) = INTERNET_RAS_INSTALLED Then
    sMsg = sMsg & "已经安装了远程访问服务功能."
End If
If (eR And INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE Then
    sMsg = sMsg & vbCrLf & "现在连接处于离线状态."
End If
If (eR And INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED Then
    sMsg = sMsg & "连接已经被设定." & vbCrLf & "继续吗?"
    bOK = True
Else
    sMsg = sMsg & "连接尚未设定好." & vbCrLf & "请先设定连接再试!"
End If
If bOK = True Then
    If MsgBox(sMsg, vbYesNo + vbExclamation, "提示") = vbYes Then
        Unload Me
        sWEB = "www.tjbeihai.com"
        HyperJump = ShellExecute(0&, vbNullString, sWEB, vbNullString, vbNullString, vbNormalFocus)
    End If
Else
     MsgBox sMsg, vbOKOnly + vbExclamation, "提示"
End If
End Sub

解决方案 »

  1.   

       告訴你一個最簡單的方法,根本不需要什麼API,你隻要用winsock,在connect事件中加一個變量,如果沒有在線就不會發生connect事件,太簡單了,我前幾天才搞了,沒有問題。記得給分哦
      

  2.   

    InternetGetConnectedStateEx 经常判断失误,太气人了。
      

  3.   

    用这个函数。:)
    属于 Windows Shell 类的:Declare Function InetIsOffline Lib "Url.dll" (Byval dwFlags As Long) As Boolean使用方法 :
    reply = Msgbox (InetIsOffline(0))
    If reply = False Then Msgbox "Your Computer Is Online"