在 Windows XP 中存在一个错误,其影响需要从资源管理器进程中调用 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 方法键入该命令将完全满足您的需要。我尝试通过脚本来完成这一切,但在尝试自动化创建快捷方式动词时遇到了问题。
选项 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 更改为下一个版本。