标题: [问题求助] [已解决]VBS如何实现禁用/启用所有网卡/网络适配器? [打印本页]
作者: doswork 时间: 2016-6-30 09:06 标题: [已解决]VBS如何实现禁用/启用所有网卡/网络适配器?
本帖最后由 doswork 于 2016-7-1 21:36 编辑
请教:VBS能实现 关闭/打开 网络连接 的功能吗? 如果能的话怎么实现?
希望的效果:不限系统(有通用性,常见系统都有效,比如xp到win10),不想用网络的时候全部关闭网络连接,需要用的时候再全部开启。 能够快速的通过点击一下 “.vbs” 就实现 关闭/开启 网络连接 的功能(也可以一个开启,一个关闭),不用来回右键、左键的点击才能实现;
网上找到的代码测试没有效果,那个代码即便能用,也只能是在“本地连接”这种名称下有效,遇到“本地连接 5”、“无线网络连接 5”这样的还得手动再次修改vbs才能用。
谢谢!
多谢“zz100001” 给出的解决办法,应该是win7以上的系统有效,xp不支持。
作者: 9zhmke 时间: 2016-6-30 13:38
本帖最后由 pcl_test 于 2016-7-1 12:46 编辑
当然可以了,参考本段(摘自 3DMAX9全自动注册 http://bbs.dp168.com/thread-79026-1-1.html):- FunctiOn NetWork(i)
- '接收参数:0:关闭“本地连接” 1:打开“本地连接” 2:自动(关闭则打开;打开则关闭)
- Const ssfCONTROLS = 3
- sConnectionName = "本地连接"
- Set shellApp = createobject("shell.application")
- Set oControlPanel = shellApp.Namespace(ssfCONTROLS)
- Set oNetConnections = nothing
- for each folderitem in oControlPanel.items
- If folderitem.name = "网络连接" Then Set oNetConnections = folderitem.getfolder: exit for
- next
- If oNetConnections is nothing Then msgbox "未找到网络连接文件夹":wscript.quit
- Set oLanConnectiOn = nothing
- for each folderitem in oNetConnections.items
- If lcase(folderitem.name) = lcase(sConnectionName) Then Set oLanConnectiOn = folderitem: exit for
- next
- If oLanConnectiOn is nothing Then msgbox "未找到 '" & sConnectionName & "' item":wscript.quit
- bEnabled = true
- Set oEnableVerb = nothing
- Set oDisableVerb = nothing
- s = "Verbs: " & vbcrlf
- for each verb in oLanConnection.verbs
- s = s & vbcrlf & verb.name
- If verb.name = "启用(&A)" Then Set oEnableVerb = verb:bEnabled = false
- If verb.name = "禁用(&B)" or verb.name = "停用(&B)" Then Set oDisableVerb = verb:End If
- next
- If bEnabled and (i=0 or i=2) Then
- oDisableVerb.DoIt
- Else
- If bEnabled=0 and i>0 Then oEnableVerb.DoIt
- End If
- wscript.sleep 400
- End Function
复制代码
作者: doswork 时间: 2016-6-30 15:46
多谢!
这段儿代码之前看过,但是我试过没有用……
我想实现的是通用的效果:也就是说,不管在什么系统都可以实现点击 .vbs 就可以快速 关闭/开启 网络连接,不知道能不能实现。
这论坛真苛刻啊……
第一次来发帖就给扣分……
作者: doswork 时间: 2016-6-30 15:50
回复 1# doswork
版主也太苛刻了吧? 呵呵……
我问的是“如何 关闭/开启 网络连接”,搜索并没有结果,然后您把标题修改了,那意思就是我问这问题必须考虑到相似的关键字都搜索一遍来问才不违规,就是说我得搜索“开启/关闭 网卡”这个发现没有才行……
作者: pcl_test 时间: 2016-6-30 17:10
本帖最后由 pcl_test 于 2016-6-30 17:11 编辑
回复 4# doswork
所有扣分是没错的,明显你是没有看过版规(或是看了却不当一回事)就随意发的贴,所以连扣分项都不知道
1、如果是标题问题,我会明说是标题
2、如果论坛有相同或类似的问题贴,而你因为没有深入搜索就发帖,我也会说明
3、你的扣分是因为你原来的标题和内容只有一含糊的话“请教:VBS能实现 关闭/打开 网络连接 的功能吗? 如果能的话怎么实现?”,而版规第二点已明确说明要求,特别是要“一次性把问题和结果交代清楚,勿‘挤牙膏’”,然后你现在才补充说明问题“希望的效果……”
4、如果不能接受论坛的版规并遵守,那么你可以离开
作者: doswork 时间: 2016-6-30 18:38
本帖最后由 doswork 于 2016-6-30 18:41 编辑
回复 5# pcl_test
多谢版主,既然来了,版规是肯定要遵守的!下次一定注意!
其实有时候问问题我们不一定会像版主您这样有很好的逻辑性,那样肯定不会有问题,特别是我们这些生手,可能会存在问题一次描述不清的情况,版主辛苦了~
问问题有时候也是整理并解决的过程,不一定一次都能把问题说的清清楚楚,都清楚的话就没必要问了,呵呵……
作者: zz100001 时间: 2016-7-1 11:10
这种模拟操作的东西,有太多不确定因素,其实如果能看懂的话,2楼 就这么磕 的代码改改去掉判断就行了
这里给你写个新的- Set sa = CreateObject("Shell.Application")
- Set cs = sa.NameSpace("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}").Items()
- For i = 0 To cs.Count - 1
- cs.Item(i).Verbs().Item(0).DoIt
- Next
- MsgBox "让子弹飞一会儿", 4160, "张麻子"
复制代码
作者: doswork 时间: 2016-7-1 17:10
回复 7# zz100001
多谢回复!
您的代码确实看不懂,但还是没有效果,出现“新建网络连接向导”……
应该是认出笔记本上有“有线”和“无线”两个连接,vbs有两个窗口,但提示无法断开连接
作者: zz100001 时间: 2016-7-1 18:06
你这啥系统啊,不知道你那个网络连接里面都有啥东西
先加个限制试一下,不行再看看里面出了网络连接还有些什么玩意儿- Set sa = CreateObject("Shell.Application")
- Set cs = sa.NameSpace("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}").Items()
- For i = 0 To cs.Count - 1
- If cs.Item(i).Path = "{BA126ADB-2166-11D1-B1D0-00805FC1270E}" Then
- cs.Item(i).Verbs().Item(0).DoIt
- End If
- Next
- MsgBox "让子弹飞一会儿", 4160, "张麻子"
复制代码
作者: doswork 时间: 2016-7-1 18:35
本帖最后由 doswork 于 2016-7-1 18:37 编辑
回复 9# zz100001
您这个和系统还有“网络连接”的名称是否有关系?
我测试机器是xp的系统,网络连接的名称不是“本地连接”,而是“本地连接 5”,刚测试和名称应该没有关系,我再试试高版本的系统
作者: doswork 时间: 2016-7-1 21:31
回复 9# zz100001
确实是系统的问题,xp系统不支持,win10有效,多谢!
作者: 9zhmke 时间: 2016-7-3 12:02
本帖最后由 9zhmke 于 2016-7-3 12:03 编辑
XP当然是可以实现的,玩程序得调试,不调试那叫定制程序
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |