Calling VB6 dll from Ruby

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:innew’
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

On Aug 29, 2:06 pm, “[email protected][email protected] wrote:

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:innew’
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

On Aug 29, 8:27 am, Mike W. [email protected] wrote:

probably wrong)
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- 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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs