'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的含义在示例中已经一一列出。
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
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.
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的含义在示例中已经一一列出。
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
'这段代码简单的判断了是否与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.