Board logo

标题: 帮忙解释这段vbs代码 [打印本页]

作者: qq43142691     时间: 2007-6-3 19:07    标题: 帮忙解释这段vbs代码

Const ssfCONTROLS = 3  
sConnectionName = "本地连接"  '可改成需要控制的连接名称,如"无线网络连接"等  
sEnableVerb = "启用(&A)"  
sDisableVerb = "停用(&B)"   'XP系统中应为 "停用(&B)"  
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  
end if  
next  
if oNetConnections is nothing then  
msgbox "未找到网络连接文件夹"  
wscript.quit  
end if  
set oLanConnection = nothing  
for each folderitem in oNetConnections.items  
if lcase(folderitem.name)  = lcase(sConnectionName) then  
   set oLanConnection = folderitem: exit for  
end if  
next  
if oLanConnection is nothing then  
msgbox "未找到 '" & sConnectionName & "' item"  
wscript.quit  
end if  
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 = sEnableVerb then   
   set oEnableVerb = verb   
   bEnabled = false  
end if  
if verb.name = sDisableVerb then   
   set oDisableVerb = verb   
end if  
next  
'debugging displays left just in case...  
'  
'msgbox s ': wscript.quit  
'msgbox "Enabled: " & bEnabled ': wscript.quit  
'not sure why, but invokeverb always seemed to work   
'for enable but not disable.   
'  
'saving a reference to the appropriate verb object   
'and calling the DoIt method always seems to work.  
'  
if bEnabled then  
'  oLanConnection.invokeverb sDisableVerb  
oDisableVerb.DoIt  
else  
'  oLanConnection.invokeverb sEnableVerb  
oEnableVerb.DoIt  
end if  
'adjust the sleep duration below as needed...  
'  
'if you let the oLanConnection go out of scope  
'and be destroyed too soon, the action of the verb  
'may not take...  
'  
wscript.sleep 400
谁帮给个注释.....偶看不懂


─────────────────── 版务记录 ────────────────────
执行人:lxmxn
原标题:帮一下偶....
说明:因标题表述过于模糊,不便于论坛的搜索和管理,请在三日内修改标题。
提示:修改标题请在当前帖的右下脚点 编辑,修改完毕之后按 编辑帖子 即可。
处罚:因属论坛新人,暂时不予处罚;若三日之后尚未修改标题,将扣除20点积分,
   以示惩罚,并由版主强制修改标题。请点击这里阅读论坛发帖规定或者查看
   提问的智慧,以避免在今后的讨论中违规发帖。
─────────────────── 版务记录 ────────────────────


[ Last edited by bjsh on 2007-6-6 at 11:06 AM ]
作者: 3742668     时间: 2007-6-3 19:23
比较简单的一个脚本,主要思路就是模拟在“本地链接”上右键菜单的执行。
Const ssfCONTROLS = 3  
sConnectionName = "本地连接"  '可改成需要控制的连接名称,如"无线网络连接"等  
sEnableVerb = "启用(&A)"  
sDisableVerb = "停用(&B)"   'XP系统中应为 "停用(&B)"  
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  
end if  
next  
if oNetConnections is nothing then  
msgbox "未找到网络连接文件夹"  
wscript.quit  
end if  
set oLanConnection = nothing  

'找到"本地连接"
for each folderitem in oNetConnections.items  
if lcase(folderitem.name)  = lcase(sConnectionName) then  
   set oLanConnection = folderitem: exit for  
end if  
next  
if oLanConnection is nothing then  
msgbox "未找到 '" & sConnectionName & "' item"  
wscript.quit  
end if  
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 = sEnableVerb then   
   set oEnableVerb = verb   
   bEnabled = false  
end if  
if verb.name = sDisableVerb then   
   set oDisableVerb = verb   
end if  
next  
'************************************************************
'调试用
'debugging displays left just in case...  
'  
'msgbox s ': wscript.quit  
'msgbox "Enabled: " & bEnabled ': wscript.quit  
'not sure why, but invokeverb always seemed to work   
'for enable but not disable.   
'  
'saving a reference to the appropriate verb object   
'and calling the DoIt method always seems to work.  
'************************************************************
'执行获得的选项(启用/停用)
if bEnabled then  
'  oLanConnection.invokeverb sDisableVerb  
oDisableVerb.DoIt  
else  
'  oLanConnection.invokeverb sEnableVerb  
oEnableVerb.DoIt  
end if  
'adjust the sleep duration below as needed...  
'  
'if you let the oLanConnection go out of scope  
'and be destroyed too soon, the action of the verb  
'may not take...  
'  
wscript.sleep 400

作者: qq43142691     时间: 2007-6-3 20:14
哈哈..谢谢大家....
作者: beeny     时间: 2007-6-24 12:41
有些复杂看不懂