这是一段检测网络连通性的代码,但是在检测时候,可能会出现连接时间过长的问题。也就是有可能10秒钟过去了,也没完成检测呢。
请高手帮忙完善一下,让他只在5秒内检测,如果5秒内没有检测结果,那么自动中断检测,让CheckConnection = False。
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInet As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Long
Public Function CheckConnection(Optional URL As Variant) As Boolean
Dim hInet As Long
Dim hUrl As Long
Dim flags As Long
Dim pingURL
If IsMissing(URL) Then
pingURL = "http://www.baidu.com"
Else
pingURL = URL
End If
Dim INTERNET_OPEN_TYPE_PRECONFIG, INTERNET_FLAG_KEEP_CONNECTION, INTERNET_FLAG_NO_CACHE_WRITE
Dim INTERNET_FLAG_RELOAD
hInet = InternetOpen(App.Title, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0&)
If hInet Then
flags = INTERNET_FLAG_KEEP_CONNECTION Or INTERNET_FLAG_NO_CACHE_WRITE Or INTERNET_FLAG_RELOAD
hUrl = InternetOpenUrl(hInet, pingURL, vbNullString, 0, flags, 0)
If hUrl Then
CheckConnection = True
Else
CheckConnection = False
End If
End If
Call InternetCloseHandle(hInet)
End Function
请高手帮忙完善一下,让他只在5秒内检测,如果5秒内没有检测结果,那么自动中断检测,让CheckConnection = False。
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInet As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Long
Public Function CheckConnection(Optional URL As Variant) As Boolean
Dim hInet As Long
Dim hUrl As Long
Dim flags As Long
Dim pingURL
If IsMissing(URL) Then
pingURL = "http://www.baidu.com"
Else
pingURL = URL
End If
Dim INTERNET_OPEN_TYPE_PRECONFIG, INTERNET_FLAG_KEEP_CONNECTION, INTERNET_FLAG_NO_CACHE_WRITE
Dim INTERNET_FLAG_RELOAD
hInet = InternetOpen(App.Title, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0&)
If hInet Then
flags = INTERNET_FLAG_KEEP_CONNECTION Or INTERNET_FLAG_NO_CACHE_WRITE Or INTERNET_FLAG_RELOAD
hUrl = InternetOpenUrl(hInet, pingURL, vbNullString, 0, flags, 0)
If hUrl Then
CheckConnection = True
Else
CheckConnection = False
End If
End If
Call InternetCloseHandle(hInet)
End Function
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货