Calling VB6 dll from Ruby

L

lrlebron

I am trying to use a VB6 dll created by another programmer from Ruby.
To see what was I opened it in Visual Studio's object browser. It has
a series of classes with their methods and properties. I want to acess
the Load method in the SalesContract class. Here's my code (which is
probably wrong)

require 'Win32API'
@ops = Win32API.new('SMD Client.dll','SalesContract::Load','I','P')

Here's the error message I'm getting

C:/Data/Projects/Smd_Ruby/testdll.rb:2:in `initialize':
GetProcAddress: SalesContract::Load or SalesContract::LoadA
(RuntimeError)
from C:/Data/Projects/Smd_Ruby/testdll.rb:2:in `new'
from C:/Data/Projects/Smd_Ruby/testdll.rb:2

I'm not sure that this is even possible. Any help would be greatly
appreciated.

Luis
 
M

Mike Woodhouse

I am trying to use a VB6 dll created by another programmer from Ruby.
To see what was I opened it in Visual Studio's object browser. It has
a series of classes with their methods and properties. I want to acess
the Load method in the SalesContract class. Here's my code (which is
probably wrong)

require 'Win32API'
@ops = Win32API.new('SMD Client.dll','SalesContract::Load','I','P')

Here's the error message I'm getting

C:/Data/Projects/Smd_Ruby/testdll.rb:2:in `initialize':
GetProcAddress: SalesContract::Load or SalesContract::LoadA
(RuntimeError)
from C:/Data/Projects/Smd_Ruby/testdll.rb:2:in `new'
from C:/Data/Projects/Smd_Ruby/testdll.rb:2

I haven't tried this from Ruby, but VB6 DLLs are actually "ActiveX" or
COM DLLs, so you should probably be trying to talk to them using the
Win32OLE library.

HTH,

Mike
 
L

lrlebron

I haven't tried this from Ruby, but VB6 DLLs are actually "ActiveX" or
COM DLLs, so you should probably be trying to talk to them using the
Win32OLE library.

HTH,

Mike- Hide quoted text -

- Show quoted text -

I tried registering the dll and using win32ole but didn't have any
luck.
Here's the code
require 'win32ole'
smd = WIN32OLE.new('SMDClient')

Here's the error message
C:/Data/Projects/Smd_Ruby/testdll.rb:4:in `initialize': unknown OLE
server: `SMDClient' (WIN32OLERuntimeError)
HRESULT error code:0x800401f3
Invalid class string from C:/Data/Projects/Smd_Ruby/testdll.rb:
4:in `new'
from C:/Data/Projects/Smd_Ruby/testdll.rb:4
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,822
Latest member
israfaceZa

Latest Threads

Top