Solved

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

Posted on 2008-06-13
2
429 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Although it can be difficult to imagine, someday your child will have a career of his or her own. He or she will likely start a family, buy a home and start having their own children. So, while being a kid is still extremely important, it’s also …
This article was originally published on Monitis Blog, you can check it  here . If you have responsibility for software in production, I bet you’d like to know more about it. I don’t mean that you’d like an extra peek into the bowels of the sour…
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
The viewer will learn how to successfully download and install the SARDU utility on Windows 7, without downloading adware.

730 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