1

如何在 vbscript 中在网络中正在运行的计算机上显示消息框?我到处搜索,但没有得到任何答案。

4

2 回答 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 命令:

  • net send(Windows Vista 及更高版本不支持;需要运行 Messenger 服务)
  • msg(仅限终端服务器用户)

您可以使用 VBScript 执行这些命令WshShell.Run,例如:

CreateObject("WScript.Shell").Run("net send computername Hello, world!")
于 2013-01-30T08:32:55.993 回答