From: "lrlebron@..." Date: 2007-08-29T22:45:05+09:00 Subject: Re: Calling VB6 dll from Ruby On Aug 29, 8:27 am, Mike Woodhouse wrote: > On Aug 29, 2:06 pm, "lrleb...@gmail.com" wrote: > > > > > > > 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- 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