[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]怎样把停用、启动网络连接的VBS代码分成两个?

把启用和停用分成两个VBS

Const ssfCONTROLS = 3
sC  '可改成需要控制的连接名称,如"无线网络连接"、"本地连接 2"等
sEnableVerb = "启用(&A)"
sDisableVerb = "停用(&B)"

set wmi = GetObject("winmgmts:")
set colSystem = wmi.ExecQuery("select * from Win32_OperatingSystem")
for each objSystem in colSystem
    if Instr(UCase(objSystem.Caption),UCase("Windows XP")) then  '如果系统是WinXP
        sNetC
        sDisableVerb = "停用(&B)"
    else  '如果系统是Win2000
        sNetC
        sDisableVerb = "禁用(&B)"
    end if
next

set shellApp = createobject("shell.application")
set oControlPanel = shellApp.Namespace(ssfCONTROLS)

set oNetConnections = nothing
for each folderitem in oControlPanel.items
    if folderitem.name  = sNetConnections then
        set oNetConnections = folderitem.getfolder
        exit for
    end if
next

if oNetConnections is nothing then
    WScript.Echo "控制面板中未找到" & sNetConnections & "文件夹"
    wscript.quit
end if

set oLanConnection = nothing
for each folderitem in oNetConnections.items
    'WScript.Echo folderitem.name
    if lcase(folderitem.name)  = lcase(sConnectionName) then
        set oLanConnection = folderitem
        exit for
    end if
next

if oLanConnection is nothing then
    WScript.Echo  sNetConnections & "中未找到'" & sConnectionName & "'项目"
    wscript.Quit
end if

bEnabled = true
set oEnableVerb = nothing
set oDisableVerb = nothing
s = "Verbs: " & vbcrlf
for each verb in oLanConnection.verbs
    'WScript.Echo verb.name
    '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
    'if msgbox(sConnectionName & " 当前状态:已启用", 36, "是否停用")=vbYes then
    oDisableVerb.DoIt
    'then
else
    '  oLanConnection.invokeverb sEnableVerb
    'if msgbox(sConnectionName & " 当前状态:已禁用", 36, "是否启用")=vbYes then
    oEnableVerb.DoIt
    'then
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 1000

set oNetConnections = nothing
set oLanConnection = nothing
set oEnableVerb = nothing
set oDisableVerb = nothing


[ 本帖最后由 jialin2008 于 2010-3-31 14:50 编辑 ]

返回列表