Solved

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

Posted on 2008-06-13
2
427 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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Abstract Express Replacement Software 12 29
Cygwin - GNU GPL License 1 27
ASP/VB email question 4 35
SQL Insert parts by customer 12 36
Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
In our personal lives, we have well-designed consumer apps to delight us and make even the most complex transactions simple. Many enterprise applications, however, are a bit behind the times. For an enterprise app to be successful in today's tech wo…
The viewer will learn how to successfully create a multiboot device using the SARDU utility on Windows 7. Start the SARDU utility: Change the image directory to wherever you store your ISOs, this will prevent you from having 2 copies of an ISO wit…

825 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