VB 自动判断:如果出现某个关闭的对话框就退出 20
我找了如下的代码,是判断网络是否已经连接的:PrivateDeclareFunctionInternetGetConnectedStateExLib"wininet.dl...
我找了如下的代码,是判断网络是否已经连接的:
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
'**************************************
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
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)
IsInNet = bConnected
End Function
Private Sub Form_Load()
MsgBox IIf(IsInNet = True, "网络已连接!", "网络无法连接!")
End Sub
form_load中是智能判断网络是否已经连接的,我要实现的结果就是,如果对话框提示[网络已连接]则继续操作,如果提示[网络无法连接]则退出 展开
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
'**************************************
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
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)
IsInNet = bConnected
End Function
Private Sub Form_Load()
MsgBox IIf(IsInNet = True, "网络已连接!", "网络无法连接!")
End Sub
form_load中是智能判断网络是否已经连接的,我要实现的结果就是,如果对话框提示[网络已连接]则继续操作,如果提示[网络无法连接]则退出 展开
3个回答
展开全部
那你不应该在Form_Load事件中判断是否联网,更好的做法是用Sub_Main()作为工程的启动入口,也就是从模块启动。右击击工程【属性】,改为从Sub_Main启动,然后添加一个模块,编写Sub_Main过程,执行判断。如果联网,则弹出程序主窗口,否则直接结束程序或者别的处理方式。这样就实现了提示未联网后不加载任何窗体。如果从窗体启动,在Load实践中判断,除非用End强制结束或者Unload Me卸载窗体,否则不管是否联网都会加载并显示一个窗体。
此外,不知道你有没有实验过,反正我自己用InternetGetConnectedState这个函数不能彻底地检验是否确实已经联网。比如我用无线网连接到ChinaNet,但是没有通过上网的用户名和密码验证,即没有在网络上注册自己的计算机,也就不能访问外网,但是这个函数返回的结果是我已经联网了。因此,建议你用每隔一段时间Ping一个服务器的办法来验证是否处于联网状态。
此外,不知道你有没有实验过,反正我自己用InternetGetConnectedState这个函数不能彻底地检验是否确实已经联网。比如我用无线网连接到ChinaNet,但是没有通过上网的用户名和密码验证,即没有在网络上注册自己的计算机,也就不能访问外网,但是这个函数返回的结果是我已经联网了。因此,建议你用每隔一段时间Ping一个服务器的办法来验证是否处于联网状态。
展开全部
Private Sub Form_Load()
If IsInNet Then
MsgBox "网络已连接!"
'继续操作
Else
MsgBox "网络无法连接!"
'退出程序
End
End If
End Sub
If IsInNet Then
MsgBox "网络已连接!"
'继续操作
Else
MsgBox "网络无法连接!"
'退出程序
End
End If
End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将网络未连接 和 网络已连接 设为标题,
在vbs中循环检测标题
在vbs中循环检测标题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询