如题

解决方案 »

  1.   

    'API函数定义
        Dim eR As EIGCInternetConnectionState
        Dim sMsg As String
        Dim sName As String
        Dim bConnected As Boolean
         
        Private Declare Function InternetSetDialState Lib "wininet.dll" _
         (ByVal lpszConnectoid As String, ByVal dwState As Long, _
         ByVal dwReserved As Long) As Long
         
        Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
        (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _
        ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
         
        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 Long
        Private 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
         
        'InternetConnected 函数判断是否连接到Internet的函数
        '获得是否以及通过何种方式连接到Internet上
        Private Function InternetConnected(Optional ByRef eConnectionInfo _
         As EIGCInternetConnectionState, Optional ByRef _
         sConnectionName As String) As Boolean
         
         Dim dwFlags As Long
         Dim sNameBuf As String
         Dim lR As Long
         Dim iPos As Long
         
         sNameBuf = String$(513, 0)
         lR = InternetGetConnectedStateEx(dwFlags, sNameBuf, 512, 0&)
         eConnectionInfo = dwFlags
         iPos = InStr(sNameBuf, vbNullChar)
         If iPos > 0 Then
         sConnectionName = Left$(sNameBuf, iPos - 1)
         ElseIf Not sNameBuf = String$(513, 0) Then
         sConnectionName = sNameBuf
         End If
         InternetConnected = (lR = 1)
        End Function  
    功能  
    判断是否连接到Internet并获取连接的方式  
    语法  
    InternetConnected ([eConnectionInfo],[sConnectionName])  
    参数  
    eConnectionInfo:返回的连接信息
    sConnectionName:返回的连接名称  
    返回值  
    连接时返回真
    未连接时返回假  
    样例  
        
        Sub main()
         Dim bConnected As Boolean
         Dim eR As EIGCInternetConnectionState
         Dim sName As String
         Dim sMsg As String
         
          '检测是否已经以及使用什么方法连接到Internet
        
         bConnected = InternetConnected(eR, sName)
         
         
         '根据获得的结果输出
         If (eR And INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM Then
         sMsg = sMsg & "使用modem连接到Internet." & vbCrLf
         End If
         If (eR And INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN Then
         sMsg = sMsg & "使用内部网连接到Internet." & vbCrLf
         End If
         If (eR And INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY Then
         sMsg = sMsg & "通过代理服务器连接到Internet." & vbCrLf
         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
         Else
         sMsg = sMsg & "没有设定好的连接." & vbCrLf
         End If
         If (eR And INTERNET_RAS_INSTALLED) = INTERNET_RAS_INSTALLED Then
         sMsg = sMsg & "本机已经安装了远程访问服务功能." & vbCrLf
         End If
         
         '显示连接名称
         If bConnected Then
         sMsg = "已连接到Internet,连接名称: " & sName & vbCrLf & vbCrLf & sMsg
         Else
         sMsg = "没有连接到Internet,连接名称: " & sName & vbCrLf & vbCrLf & sMsg
         End If
        Debug.Print sMsg
        End Sub  
    说明  
    枚举值 EIGCInternetConnectionState的含义在示例中已经一一列出。  
      

  2.   

    http://vbnet.mvps.org/index.html?code/internet/tracerthost.htm自己找下,偶得回家了,闪先:D
      

  3.   

    Dim bLoop As Boolean, bConnected As Boolean
    Private Function IfConnected() As Boolean
       bLoop = False
       If Winsock1.State <> sckClosed Then Winsock1.Close
       Winsock1.RemoteHost = "www.csdn.net"
       Winsock1.RemotePort = 80
       Winsock1.Connect
       Do
          DoEvents
       Loop While bLoop = False
       IfConnected = bConnected
    End FunctionPrivate Sub Winsock1_Close()
       Winsock1.Close
    End SubPrivate Sub Winsock1_Connect()
       Winsock1_Close
       bConnected = True
       bLoop = True
    End SubPrivate Sub Winsock1_Error(ByVal Number As Integer, Description As String, _
                               ByVal Scode As Long, ByVal Source As String, _
                               ByVal HelpFile As String, _
                               ByVal HelpContext As Long, _
                               CancelDisplay As Boolean)
       bConnected = False
       bLoop = True
       CancelDisplay = True
    End Sub
      

  4.   

    http://blog.csdn.net/online/archive/2004/09/04/94105.aspx
    '这段代码简单的判断了是否与internet连接'如果连接,得到网页源码并且保存Private Sub Command2_Click()Inet1.CancelIf Len(Inet1.OpenURL("http://localhost/xml\tt.htm")) <> 0 Then    MsgBox "已经连接"    Text2.Text = Inet1.OpenURL("http://localhost/xml\tt.htm")    If Inet1.StillExecuting Then       DoEvents    End If    '保存到文件    Open App.Path & "\index.htm" For Output As #1        Print #1, Text2.Text    Close #1Else    MsgBox "没有连接"End IfEnd Sub.