判断网络是否已经断线

    技术2022-05-11  60

    '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 'InternetConnected 函数的调用 '检测是否已经以及使用什么方法连接到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 

    最新回复(0)