Solved

Accessing Message Queue thru VB6 dll on 64-bit OS, Error 5 Invalid Procedure or argument

Posted on 2008-06-13
2
426 Views
Last Modified: 2013-11-26
I am calling a function from a VB6 dll that sends a message to a queue. The message is sent correctly unless I am using Windows 64-bit OS (with the VB6 dll registered there) then I get the Error 5, Invalid procedure or arguement error message..
0
Comment
Question by:TerryWS
2 Comments
 
LVL 22

Expert Comment

by:cookre
ID: 21787445
Code?
0
 

Accepted Solution

by:
TerryWS earned 0 total points
ID: 21792761

Public Sub SendMessage(ByVal sMessage As String)

On Error GoTo PROC_ERR

    

    Const PROC_NAME As String = ".SendMessage"

    

    Dim oOpenQueue As MSMQQueue

    Dim oQueueMessage As MSMQMessage

    Dim oQueueInfo As MSMQQueueInfo

    Dim sQueueName As String

    

    sQueueName = GetPDFrequestQueueID

    

    'make sure we have a queue name

    If Len(Trim$(sQueueName)) = 0 Then

        On Error GoTo 0

        Err.Raise ERROR_EMPTY_MSMQNAME, MODULE_NAME & PROC_NAME, "Queue Name can not be empty."

    End If

    

    'set the name of the queue to open

    Set oQueueInfo = New MSMQQueueInfo

        oQueueInfo.FormatName = sQueueName

        

        'open the queue

        Set oOpenQueue = oQueueInfo.Open(MQ_SEND_ACCESS, MQ_DENY_NONE)

        

            'create the message to put in the queue

            Set oQueueMessage = New MSMQMessage

                With oQueueMessage

                    .Label = "PDF Request"

                    .Body = sMessage

                    .AppSpecific = 0

                    .Delivery = MQMSG_DELIVERY_EXPRESS

                End With

                

                'send the message

                oQueueMessage.Send oOpenQueue, MQ_NO_TRANSACTION

            Set oQueueMessage = Nothing

            

            'close the queue

            oOpenQueue.Close

        

        Set oOpenQueue = Nothing

    Set oQueueInfo = Nothing

    

PROC_EXIT:

    Exit Sub
 

PROC_ERR:

    Dim lError As Long

    Dim sDesc As String

    Dim sSource As String

    Dim sHelpFile As String

    Dim lHelpContext As Long

    With Err

        lError = .Number

        sDesc = .Description

        sSource = MODULE_NAME & PROC_NAME & " - " & .Source

        sHelpFile = .HelpFile

        lHelpContext = .HelpContext

    End With

    

    Set oQueueMessage = Nothing

    If Not (oOpenQueue Is Nothing) Then

        oOpenQueue.Close

    End If

    Set oOpenQueue = Nothing

    Set oQueueInfo = Nothing

    

    Err.Raise lError, sSource, sDesc, sHelpFile, lHelpContext

End Sub

Open in new window

0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Let’s list some of the technologies that enable smooth teleworking. 
In this article, you will read about the trends across the human resources departments for the upcoming year. Some of them include improving employee experience, adopting new technologies, using HR software to its full extent, and integrating artifi…
This video shows how use content aware, what it’s used for, and when to use it over other tools.
This video will demonstrate how to find the puppet warp tool from the edit menu and where to put the points to edit.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now