Option Explicit
Dim qInfo As MSMQQueueInfo
Dim qObject As MSMQQueue
Dim qMessage As MSMQMessage
Private Sub Class_Initialize()
 Dim obj_1 As Object
 Set obj_1 = CreateObject("QueueClient.ApplyInfo")
   Set qInfo = New MSMQQueueInfo
    qInfo.PathName = ".\Private$\TestQueue"
    qInfo.Label = "Test Queue"
    Set qObject = qInfo.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE)
    Set qMessage = qObject.Receive(MQ_NO_TRANSACTION, False, True, 5)
    MsgBox qMessage.Label
    End If
NoMessage:
    qObject.Close
    Set qInfo = Nothing
    Set qObject = Nothing
    Set qMessage = Nothing
End Sub
龙卷风 我又遇到问题了,我怎么能让dll组件,一直运行在客户端,只要消息队列里一有消息就开始运行客户端组件啊?我上面的代码可对啊?我如何侦听啊?

解决方案 »

  1.   

    Dim WithEvents qMSMQEvent As MSMQEvent
    Private Sub qMSMQEvent_Arrived(ByVal Queue As Object, ByVal Cursor As Long)
    End Sub用WithEvents你不是已经做成功了吗??
      

  2.   

    Option ExplicitDim qInfo As MSMQQueueInfoDim qObject As MSMQQueueDim qMessage As MSMQMessageDim WithEvents qMSMQEvent As MSMQEvent
    Private Sub qMSMQEvent_Arrived(ByVal Queue As Object, ByVal Cursor As Long)  Set qInfo = New MSMQQueueInfo   
        qInfo.PathName = ".\Private$\TestQueue"    qInfo.Label = "Test Queue"    '这种方式会将消息队列中的消息删除    Set qObject = qInfo.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE)    Set qMessage = qObject.Receive(MQ_NO_TRANSACTION, False, True, 5)    '这种方式不会删除消息队列中的消息   ' Set qObject = qInfo.Open(MQ_PEEK_ACCESS, MQ_DENY_NONE)   ' Set qMessage = qObject.Peek(MQ_NO_TRANSACTION, False, True, 5)        If qMessage Is Nothing Then        MsgBox "消息队列中没有消息", vbInformation + vbOKOnly, "信息提示"        GoTo NoMessage:    Else            'lblMsgLabel.Caption = qMessage.Label    'lblMsgBody.Caption = qMessage.Body   ' lblPriorityLevel.Caption = qMessage.Priority   ' lblArrivalTime.Caption = qMessage.ArrivedTime
        MsgBox qMessage.Label    End If    NoMessage:    qObject.Close        Set qInfo = Nothing    Set qObject = Nothing    Set qMessage = Nothing
    End Sub没有任何反映啊
      

  3.   

    连接事件
        Set qMSMQEvent = New MSMQEvent
        qObject.EnableNotification qMSMQEvent, MQMSG_CURRENT, 1000
    Class_Initialize中连接事件你把文章仔细看一下
      

  4.   

    WithEvents不会用,怎么用啊?解释
      

  5.   

    这样好了
    你先按我的例子调试通过,然后在转到组件中
    请看msdn中的解释
      

  6.   

    Class_Initialize中连接事件 关键是组件要运行啊  Set obj_1 = CreateObject("QueueClient.ApplyInfo")
      

  7.   

    已经调试通过,我现在就想在组件中实行。。郁闷的很啊。关键是调用组件啊。Set obj_1 = CreateObject("QueueClient.ApplyInfo")
    上面这段  我不知道在什么地方执行。。