我想写个程序检测机器是否已经连接到网络
使用了检测注册表的方法,但是我的机器居然没有那个项。
所以行不通。用ping的方法又觉得超时的问题不爽
不知道有没有其他什么方法解决?

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3066/3066714.xml?temp=.7641413
      

  2.   

    Private Declare Function InetIsOffline Lib "url.dll" (ByVal dwFlags As Long) As Long
    Private Sub Form_Load()
        MsgBox "Are you connected to the internet? " + CStr(CBool(Not (InetIsOffline(0)))), vbInformation
    End Sub
      

  3.   

    测试了楼上的,我断了网线,还是True~~
    Form1:
    Private Sub Command1_Click()Dim eR As EIGCInternetConnectionState
    Dim sMsg As String
    Dim sName As String
    Dim bConnected As Boolean    ' Determine whether we have a connection:
        bConnected = InternetConnected(eR, sName)    ' The connection state info parameter provides details
        ' about how we connect:
        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
       
       ' Display the connection name and info:
        If bConnected Then
            MsgBox "已连接到Internet,连接名称: " & sName & vbCrLf & sMsg, vbInformation + vbOKOnly, "提示"
        Else
            MsgBox "没有连接到Internet,连接名称: " & sName & vbCrLf & sMsg, vbCritical + vbOKOnly, "提示"
        End If
       
    End Sub
    Bas:
    '获取网络连接状态
    Public 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 LongPublic 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 EnumPublic Property Get 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 Property
      

  4.   

    '放一个timer实时监视网络连接
    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 Property Get OnLine(LinkName As String) As Boolean
    LinkName = Space$(128)
    OnLine = InternetGetConnectedStateEx(0, LinkName, 128, 0&)
    End PropertyPrivate Sub Form_Load()
    Timer1.Interval = 1
    End SubPrivate Sub Timer1_Timer()
    Static LinkName As String
    Me.Caption = IIf(OnLine(LinkName), "在线", "离线") & " - " & LinkName
    End Sub
      

  5.   

    如果连连接到网络的连接名都不需要知道就更简短啦Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As LongPrivate Sub Form_Load()
    Timer1.Interval = 1
    End SubPrivate Sub Timer1_Timer()
    Me.Caption = IIf(InternetGetConnectedState(0&, 0&), "在线", "离线")
    End Sub