此脚本应该打开第一个找到的已启用或已连接的网络连接的Windows shell状态和属性对话框。但是,仅打开“属性”对话框。状态对话框的动词已经正确,即“Stat& us”。该脚本已经过测试,将在Windows XP Pro SP3 32位下使用。它通过连接的3G拨号和LAN Loopback进行了测试。两者都有同样的问题。
dim a,b,c
set a=createobject("shell.application")
set b=a.namespace(0).parsename("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}").getfolder
for i=0 to (b.items.count-1)
set c=b.items.item(i)
for j=0 to (c.verbs.count-1)
'only process connected/enabled
if (lcase(c.verbs.item(j)) = "disc&onnect") or (lcase(c.verbs.item(j)) = "disa&ble") then
'open status and properties dialogs
c.invokeverb("Stat&us") 'this doesn't work
c.invokeverb("P&roperties") 'this one works
msgbox "Press OK to close all and exit"
wscript.quit
end if
next
next
答案 0 :(得分:1)
在Windows XP中有一个错误,其效果需要在Explorer进程中调用Status动词。由于WScript / CScript不是Explorer进程的子进程,因此尽管没有任何明显错误,但任何尝试调用状态动词都是徒劳的。此错误似乎已在以后的版本中修复,因为下面的脚本已经过测试并在Vista x64中运行。
Set objShell = CreateObject("Shell.Application")
Set objShellFolder = objShell.Namespace(0).ParseName("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}").GetFolder
For Each objShellFolderItem in objShellFolder.Items
Set colShellFolderItemVerbs = objShellFolderItem.Verbs
For Each objShellFolderItemVerb in colShellFolderItemVerbs
strVerb = objShellFolderItemVerb.Name
If (strVerb = "C&onnect / Disconnect") Then
objShellFolderItem.InvokeVerb("Properties")
objShellFolderItem.InvokeVerb("Status")
MsgBox "Press OK to close and exit"
WScript.Quit(0)
End If
Next
Next
选项1
这是否意味着你运气不好?不是完全。我有两个不同的建议。第一个使用了一点技巧。状态是任何网络连接处于连接状态时的默认操作。打开网络连接,右键单击要监控的连接,然后选择“创建快捷方式”。您可以将快捷方式放在任何位置。默认情况下,它将在桌面上命名为“无线网络连接 - Shortcut.lnk”。在命令行中或通过脚本中的Run或Exec方法键入它将完全满足您的需要。我尝试通过脚本执行此操作,但遇到问题tryint自动创建快捷方式动词。
选项2
第二种选择也是一种解决方法,但如果您的3G连接使用拨号网络,则可能会有效。命令行rundll32.exe rnaui.dll,RnaDial {name of connection to establish}
将打开要连接的对话框,但是,如果已连接,则会打开连接的“状态”对话框。然后你可以尝试这样的脚本:
Set objShell = CreateObject("Shell.Application")
Set objShellFolder = objShell.Namespace(0).ParseName("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}").GetFolder
For Each objShellFolderItem in objShellFolder.Items
strConnection = objShellFolderItem.Name
strCommandLine = "rundll32.exe rnaui.dll,RnaDial " & Chr(34) & strConnection & Chr(34)
Set colShellFolderItemVerbs = objShellFolderItem.Verbs
For Each objShellFolderItemVerb in colShellFolderItemVerbs
strVerb = objShellFolderItemVerb.Name
If (strVerb = "C&onnect / Disconnect") Then
objShellFolderItem.InvokeVerb("Properties")
CreateObject("WScript.Shell").Run strCommandLine
MsgBox "Press OK to close and exit"
WScript.Quit(0)
End If
Next
Next
选项3
最后一个选项是使用WMI显示有关网络连接的信息。这是一种更传统的脚本方法。
无论如何,我希望这会有所帮助。不要忘记根据需要更改动词。它们确实从一个版本的Windows更改为下一个版本。