现在做了一个软件,请教大家如何判断网络状态?想在软件启动的时候,检测一下网络状态。if 。。。。thenmsgbox 网
现在做了一个软件,请教大家如何判断网络状态?
想在软件启动的时候,检测一下网络状态。
if 。。。。then
msgbox "网络已断开。"
else
msgbox "网络有连接。"
end if
各位高手给下方法,得创建什么控件,然后代码如何写?
我是新手,请说具体点,谢谢!
[解决办法]
看看这个吧,写得很详细.
- VB code
Option Explicit'拨号/断网Private Declare Function InternetDial Lib "wininet.dll" (ByVal hwndParent As Long, ByVal lpszConnectoid As String, ByVal dwFlags As Long, lpdwConnection As Long, ByVal dwReserved As Long) As LongPrivate Declare Function InternetHangUp Lib "wininet.dll" (ByVal dwConnection As Long, ByVal dwReserved As Long) As LongPrivate Declare Function InternetAutodial Lib "wininet.dll" (ByVal dwFlags As Long, ByVal dwReserved As Long) As LongPrivate Declare Function InternetAutodialHangup Lib "wininet.dll" (ByVal dwReserved As Long) As LongPrivate Const INTERNET_DIALSTATE_DISCONNECTED = 1Private Const INTERNET_AUTODIAL_FORCE_ONLINE = 1Private Const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2Private Const INTERNET_DIAL_UNATTENDED = &H8000Private Handle 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 LongPrivate Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef dwFlags As Long, ByVal dwReserved As Long) As LongPrivate Const INTERNET_CONNECTION_MODEM As Long = &H1 '本系统使用调制解调器与因特网相连Private Const INTERNET_CONNECTION_LAN As Long = &H2 '本系统通过LAN与因特网相连Private Const INTERNET_CONNECTION_PROXY As Long = &H4 '本系统使用proxy代理服务器与因特网相连Private Const INTERNET_CONNECTION_MODEM_BUSY As Long = &H8 '未使用Private Const INTERNET_RAS_INSTALLED As Long = &H10Private Const INTERNET_CONNECTION_OFFLINE As Long = &H20Private Const INTERNET_CONNECTION_CONFIGURED As Long = &H40'枚举网络连接Private Const RAS_MaxDeviceType = 16Private Const RAS95_MaxDeviceName = 128Private Const RAS95_MaxEntryName = 256Private Type RASCONN95dwSize As LonghRasConn As LongszEntryName(RAS95_MaxEntryName) As ByteszDeviceType(RAS_MaxDeviceType) As ByteszDeviceName(RAS95_MaxDeviceName) As ByteEnd TypePrivate Type RASENTRYNAME95dwSize As LongszEntryName(RAS95_MaxEntryName) As ByteEnd TypePrivate Declare Function RasEnumConnections Lib "rasapi32.dll" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnections As Long) As LongPrivate Declare Function RasEnumEntries Lib "rasapi32.dll" Alias "RasEnumEntriesA" (ByVal reserved As String, ByVal lpszPhonebook As String, lprasentryname As Any, lpcb As Long, lpcEntries As Long) As LongPrivate Declare Function RasHangUp Lib "rasapi32.dll" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long'拨号Public Function DialUp(LinkName As String) As BooleanInternetDial 0, LinkName, INTERNET_AUTODIAL_FORCE_UNATTENDED, Handle, 0DialUp = (Handle <> 0)End Function'断网Public Sub HangUp()If Handle <> 0 ThenInternetHangUp Handle, 0Handle = 0End IfEnd Sub'枚举网络连接Public Sub EnumConnectName(Value() As String)Dim s As Long, l As Long, ln As Long, a As StringReDim r(255) As RASENTRYNAME95r(0).dwSize = 264s = 256 * r(0).dwSizel = RasEnumEntries(vbNullString, vbNullString, r(0), s, ln)ReDim Value(ln - 1)For l = 0 To ln - 1a = StrConv(r(l).szEntryName(), vbUnicode)Value(l) = Left$(a$, InStr(a$, Chr$(0)) - 1)NextEnd Sub'判断是否在线Public Function Online() As BooleanOnline = InternetGetConnectedState(0&, 0&)End Function'判断是否在线并返回连接方式Public Property Get OnlineOfLinkName(LinkName As String) As BooleanLinkName = Space$(128)OnlineOfLinkName = InternetGetConnectedStateEx(0, LinkName, 128, 0&)End Property'如果是通过LAN的连接,则返回TruePublic Function IsNetConnectViaLAN() As BooleanDim dwFlags As LongCall InternetGetConnectedState(dwFlags, 0&)IsNetConnectViaLAN = dwFlags And INTERNET_CONNECTION_LANEnd Function'如果是通过调制解调器的连接,则返回TruePublic Function IsNetConnectViaModem() As BooleanDim dwFlags As LongCall InternetGetConnectedState(dwFlags, 0&)IsNetConnectViaModem = dwFlags And INTERNET_CONNECTION_MODEMEnd Function'如果是通过Proxy代理服务器的连接,则返回TruePublic Function IsNetConnectViaProxy() As BooleanDim dwFlags As LongCall InternetGetConnectedState(dwFlags, 0&)IsNetConnectViaProxy = dwFlags And INTERNET_CONNECTION_PROXYEnd Function'如果已安装了RAS,则返回TruePublic Function IsNetRASInstalled() As BooleanDim dwFlags As LongCall InternetGetConnectedState(dwFlags, 0&)IsNetRASInstalled = dwFlags And INTERNET_RAS_INSTALLEDEnd Function'返回当前网络状态信息字符串Public Function GetNetConnectString() As BooleanDim dwFlags As LongDim Msg As StringIf InternetGetConnectedState(dwFlags, 0&) ThenIf dwFlags And INTERNET_CONNECTION_CONFIGURED ThenMsg = MsgBox("系统配置了网络连接") & vbCrLfEnd IfIf dwFlags And INTERNET_CONNECTION_LAN ThenMsg = MsgBox("系统通过局域网与因特网相连接")End IfIf dwFlags And INTERNET_CONNECTION_PROXY ThenMsg = MsgBox("并使用了Proxy代理服务")End IfIf dwFlags And INTERNET_CONNECTION_MODEM ThenMsg = MsgBox("系统使用调制解调器与因特网相连接")End IfIf dwFlags And INTERNET_CONNECTION_OFFLINE ThenMsg = MsgBox("系统当前处于离线状态")End IfIf dwFlags And INTERNET_CONNECTION_MODEM_BUSY ThenMsg = MsgBox("系统的调制解调器未连接到因特网")End IfIf dwFlags And INTERNET_RAS_INSTALLED ThenMsg = MsgBox("本系统安装了远程访问服务")End IfGetNetConnectString = TrueElseMsg = MsgBox("当前未与因特网相连")GetNetConnectString = FalseEnd IfEnd FunctionPrivate Sub Command1_Click()GetNetConnectStringEnd Sub
[解决办法]
