检测本机是否联入互联网,以及以什么形式联入Option Explicit '检测本机是否联入互联网,以及以什么形式联入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 EnumPrivate 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
On Error Resume Next
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 FunctionPublic Function IsInNet() As Boolean '检测是否已经以及使用什么方法连接到Internet Dim bConnected As Boolean Dim eR As Long Dim sName As String Dim sMsg As String
bConnected = InternetConnected(eR, sName) '根据获得的结果输出 If (eR And INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM Then sMsg = sMsg & "使用modem连接到Internet." End If If (eR And INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN Then sMsg = sMsg & "使用内部网连接到Internet." End If If (eR And INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY Then sMsg = sMsg & "通过代理服务器连接到Internet." End If If (eR And INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE Then sMsg = sMsg & "现在连接处于离线状态." End If If (eR And INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED Then sMsg = sMsg & "连接已经被设定." Else sMsg = sMsg & "没有设定好的连接." End If If (eR And INTERNET_RAS_INSTALLED) = INTERNET_RAS_INSTALLED Then sMsg = sMsg & "本机已经安装了远程访问服务功能." End If
MsgBox sMsg
IsInNet = bConnected
End Function Sub Main() If IsInNet Then MsgBox "connected!" Else MsgBox "no connected!" End If End Sub
'检测本机是否联入互联网,以及以什么形式联入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 EnumPrivate 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
On Error Resume Next
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 FunctionPublic Function IsInNet() As Boolean '检测是否已经以及使用什么方法连接到Internet
Dim bConnected As Boolean
Dim eR As Long
Dim sName As String
Dim sMsg As String
bConnected = InternetConnected(eR, sName) '根据获得的结果输出
If (eR And INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM Then
sMsg = sMsg & "使用modem连接到Internet."
End If If (eR And INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN Then
sMsg = sMsg & "使用内部网连接到Internet."
End If If (eR And INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY Then
sMsg = sMsg & "通过代理服务器连接到Internet."
End If If (eR And INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE Then
sMsg = sMsg & "现在连接处于离线状态."
End If If (eR And INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED Then
sMsg = sMsg & "连接已经被设定."
Else
sMsg = sMsg & "没有设定好的连接."
End If If (eR And INTERNET_RAS_INSTALLED) = INTERNET_RAS_INSTALLED Then
sMsg = sMsg & "本机已经安装了远程访问服务功能."
End If
MsgBox sMsg
IsInNet = bConnected
End Function
Sub Main()
If IsInNet Then
MsgBox "connected!"
Else
MsgBox "no connected!"
End If
End Sub