'检测本机是否联入互联网,以及以什么形式联入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
怎么没用啊,它一直提示connected,即使我把网线给拔了。怎么办啊?
用一定时器,定时检测 If IsInNet Then MsgBox "connected!" Else MsgBox "no connected!" End If
'检测本机是否联入互联网,以及以什么形式联入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
If IsInNet Then
MsgBox "connected!"
Else
MsgBox "no connected!"
End If
我用MAPI写了一个发送电子邮件的小程序,我想在发送和接受邮件前检测一下网络.该如何解决呢?
If IsInNet Then
MsgBox "connected!"
Else
MsgBox "no connected!"
End If
API IcmpCreateFile , IcmpSendEcho, IcmpCloseHandle