Share via


Sample VBS script for sending and recieving messages from MSMQ

Option Explicit

Const MQ_RECEIVE_ACCESS = 1
Const MQ_SEND_ACCESS = 2
Const MQ_DENY_NONE = 0
Const MQ_PEEK_ACCESS = 32

Dim Transaction

Dim FormatName
FormatName = WScript.Arguments.Named("f")
If FormatName = "" Then
Help()
Wscript.Quit
End If

Dim MSMQQueueInfo
Set MSMQQueueInfo = CreateObject("MSMQ.MSMQQueueInfo")
MSMQQueueInfo.FormatName = FormatName

If MSMQQueueInfo.IsTransactional2 Then
Transaction = 3 'MQ_SINGLE_MESSAGE
Else
Transaction = 0 'MQ_NO_TRANSACTION
End If

Dim MSMQQueue
Set MSMQQueue = CreateObject("MSMQ.MSMQQueue")

Dim MSMQMessage
Set MSMQMessage = CreateObject("MSMQ.MSMQMessage")

Select Case WScript.Arguments(0)
 Case "/send"
  Set MSMQQueue = MSMQQueueInfo.Open(MQ_SEND_ACCESS, MQ_DENY_NONE)
  MSMQMessage.Body = "Testing Message Queue"
  MSMQMessage.Label = "SampleApp"
  MSMQMessage.Send MSMQQueue, Transaction
  WScript.Echo "Message Sent"
 Case "/peek"
  Set MSMQQueue = MSMQQueueInfo.Open(MQ_PEEK_ACCESS, MQ_DENY_NONE)
  WScript.Echo "If queue is empty, the command will wait until a message comes into queue"
  WScript.Echo "Receiving Message....."
  Set MSMQMessage = MSMQQueue.Peek
  WScript.Echo "Label: " & CStr (MSMQMessage.Label)
  WScript.Echo "Body: " & CStr (MSMQMessage.Body)
  WScript.Echo "Received Message"

 Case "/receive"
  Set MSMQQueue = MSMQQueueInfo.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE)
  WScript.Echo "If queue is empty, the command will wait until a message comes into queue"
  WScript.Echo "Receiving Message....."
  Set MSMQMessage = MSMQQueue.Receive
  WScript.Echo "Label: " & CStr (MSMQMessage.Label)
  WScript.Echo "Body: " & CStr (MSMQMessage.Body)
  WScript.Echo "Received Message"

 Case else
  Wscript.Echo "Usage:"
  Wscript.Echo "msmq.vbs /send"
  Wscript.Echo "msmq.vbs /peek"
  Wscript.Echo "msmq.vbs /receive"
End Select

Function Help()
  Wscript.Echo "Usage:"
  Wscript.Echo "msmq.vbs /send /f:DIRECT=OS:machine\private$\test"
  Wscript.Echo "msmq.vbs /peek /f:DIRECT=OS:machine\private$\test"
  Wscript.Echo "msmq.vbs /receive /f:DIRECT=OS:machine\private$\test"
End Function