请问各位大侠,VB用什么方法检测电脑的网络是接通的,也就是电脑正在上网?又怎样断开网络?
解决方案 »
- 求助vb 数据库添加问题
- vb 连sql中 有点疑惑
- 问一个奇怪的问题.不要笑我.关于整型变负数的情况
- 一个关于EbExecuteLine的问题
- 请问vb里有判断目录或者文件的函数吗?各位大S帮忙啊
- 各位使用Setup Factory 6.0制作安装文件,如何检测以前的版本是否存在,如果存在就卸载,然后安装新版(无需人工操作!)
- 求助:如何在DATAGRID控件中直接显示当前行的行号??
- 数据库问题,解答---一个新学VB的又要马上用到VB编程的人
- 谁能告诉我CoolMenu V3.0.24a 的注册码?急用。在线等待!!谢了
- 高手求救!!!!!关于api的。
- Access VBA 中按钮触发调用另一个窗体!
- ImageList1控件中的图片能否直接插入到EXCEL工作表中?
Option ExplicitPrivate Type QOCINFO
dwSize As Long
dwFlags As Long
dwInSpeed As Long
dwOutSpeed As Long
End TypePrivate Const NETWORK_ALIVE_LAN As Long = &H1
Private Const NETWORK_ALIVE_WAN As Long = &H2
Private Const NETWORK_ALIVE_AOL As Long = &H4
Private Declare Function IsDestinationReachable Lib "sensapi.dll" _
Alias "IsDestinationReachableA" _
(ByVal lpszDestination As String, _
lpQOCInfo As QOCINFO) As LongPrivate Const REG_MULTI_SZ = 7&
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const HKEY_TCPIP As String = "SYSTEM\CurrentControlSet\Services\Tcpip\"Private Declare Function RegOpenKey Lib "advapi32.dll" _
Alias "RegOpenKeyA" _
(ByVal HKey As Long, _
ByVal lpSubKey As String, _
phkResult As Long) As LongPrivate Declare Function RegQueryValueEx Lib "advapi32.dll" _
Alias "RegQueryValueExA" _
(ByVal HKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
lpType As Long, _
lpData As Any, _
lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal HKey As Long) As LongPublic Function GetLocalIP() As String
Dim HKey&, strBuf As String, DataBufSize As Long, data$, Subkey$ On Error Resume Next '获得配置ip信息的子键信息
RegOpenKey HKEY_LOCAL_MACHINE, HKEY_TCPIP & "Linkage", HKey '读取缓冲区大小
RegQueryValueEx HKey, "Route", 0, REG_MULTI_SZ, ByVal 0, DataBufSize '建立缓冲区
strBuf = String$(DataBufSize, Chr$(0))
RegQueryValueEx HKey, "Route", 0, REG_MULTI_SZ, ByVal strBuf, DataBufSize '获取Chr(0)分隔的键值
data = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
'过滤一个"
Subkey = Mid$(data, 2, Len(data) - 2) '获得IP地址
RegOpenKey HKEY_LOCAL_MACHINE, HKEY_TCPIP & "Parameters\Interfaces\" & Subkey, HKey
RegQueryValueEx HKey, "IPAddress", 0, REG_MULTI_SZ, ByVal 0, DataBufSize
strBuf = String$(DataBufSize, Chr$(0))
RegQueryValueEx HKey, "IPAddress", 0, REG_MULTI_SZ, ByVal strBuf, DataBufSize
GetLocalIP = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)End FunctionPublic Function IsNetConnectionAlive(ByVal localIP As String) As Boolean
Dim result As Long
Dim qoc As QOCINFO qoc.dwSize = Len(qoc)
result = IsDestinationReachable(localIP, qoc) '测试本地IP
IsNetConnectionAlive = qoc.dwFlags
End FunctionPrivate Sub Command1_Click()
If IsNetConnectionAlive(GetLocalIP) Then
MsgBox "已连接"
Else
MsgBox "连接断开"
End If
End Sub
1:禁用本地连接
2:修改IP地址和域名解析地址
等等。
其中修改IP地址比较简单,直接用
netsh interface ip set address 就行了。
Private Declare Function InternetSetOption Lib "wininet.dll" Alias "InternetSetOptionA" (ByVal hInternet As Long, ByVal dwOption As Long, lpBuffer As Any, ByVal dwBufferLength As Long) As Long
Private Type internetInfo
lngconnectedstate As Long
lngFlags As Long
End Type
Private Sub Test()
Dim connectInfo As internetInfo
Dim lngSuccess As Long
connectInfo.lngconnectedstate = &H10 '断开连接
connectInfo.lngFlags = 1 '设置标识
lngSuccess = InternetSetOption(0, 50, connectInfo, Len(connectInfo))
If lngSuccess = 1 Then
MsgBox "网络断开成功", vbInformation, "测试"
Else
MsgBox "网络断开失败", vbInformation, "测试"
End If
End SubPrivate Sub Command1_Click()
Call Test
End Sub
'如果c:\temp.txt文件内容是0表示当前没程序连接网络,否则表示有。
如果是完全断开(受限)
直接:
Private Sub Command1_Click()
Shell "cmd /c ipconfig -release", vbHide
End Sub