如何在 vbscript 中在网络中正在运行的计算机上显示消息框?我到处搜索,但没有得到任何答案。
问问题
7995 次
2 回答
2
也许这对于 VBScript 来说是一个有点高级的问题,但是由于 WSH 允许远程脚本,因此它可能是WSHController的任务。当然,它需要适当的配置,本文展示了设置此对象的一些步骤,Microsoft 的 Windows Script 5.6 文档提供了更多详细信息。
有一些限制不允许在远程脚本中进行 UI 交互(如 MsgBox、InputBox 等),但这可以通过使用FileSystemObject
.
您将需要 2 个脚本,一个从您的控制器计算机上运行(我将其命名为RemoteScript.vbs),另一个您将复制到目标计算机(Messenger.wsf)。我将在这里的一个块中发布整个代码,但是您需要将每个部分复制到单独的文件中。
REM ----------- RemoteScript.vbs code start here -------------
Const WshFinished = 2
Dim Controller, RemoteScript, RemoteServer
RemoteServer = "\\server_name"
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("Messenger.wsf", RemoteServer)
WScript.ConnectObject RemoteScript, "WSH_"
RemoteScript.Execute
Do While RemoteScript.Status <> WshFinished
WScript.Sleep 200
Loop
WScript.DisconnectObject RemoteScript
Sub WSH_Error
With RemoteScript.Error
WScript.Echo "Error " & _
CStr(Hex(.Number)) & " - Line: " & .Line & _
", Char: " & .Character & vbCrLf & _
"Description: " & .Description
End With
WScript.Quit -1
End Sub
Function WSH_End()
MsgBox "wshRemote End Event fired"
End Function
Function WSH_Start()
MsgBox "wshRemote Start Event fired"
End Function
REM ----------- RemoteScript.vbs code end here ---------------
REM ----------- Messenger.wsf code start here ----------------
<package>
<job>
<script language="VBScript">
tmpFile = "c:\_tmp711a.vbs"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fout = fso.CreateTextFile(tmpFile, true)
fout.WriteLine "MsgBox ""Remote Hello"", 0, ""Example"" "
fout.Close
WScript.Sleep 100
Set shell = CreateObject("WScript.Shell")
shell.Run "wscript " & tmpFile, 1, True
If fso.FileExists(tmpFile) Then fso.DeleteFile(tmpFile)
</script>
</job>
</package>
REM ----------- Messenger.wsf code end here ----------------
于 2013-01-30T21:29:04.463 回答
0
您可以使用以下 Windows 命令:
您可以使用 VBScript 执行这些命令WshShell.Run
,例如:
CreateObject("WScript.Shell").Run("net send computername Hello, world!")
于 2013-01-30T08:32:55.993 回答