[Ironruby-core] COM Interop Problem

Jim Deville jdeville at microsoft.com
Fri Feb 19 11:10:33 EST 2010


Just so you know, the WIN32OLE library wraps the COM initialization and removes the need for to_clr_string.

Require 'win32ole'
WIN32OLE.new 'Excel.Application'


This will also be cross compatible with MRI.

Tomas: Can we make Shane's case work without requiring the cast to CLR string?

JD



-----Original Message-----
From: Shane Emmons <semmons99 at gmail.com>
Sent: Friday, February 19, 2010 7:02 AM
To: ironruby-core at rubyforge.org <ironruby-core at rubyforge.org>
Subject: Re: [Ironruby-core] COM Interop Problem


On Thu, Feb 18, 2010 at 3:42 PM, Shane Emmons <semmons99 at gmail.com> wrote:
> Anytime I invoke a method on a COM object with one or more arguments,
> I get the following error:
>  Could not convert argument 0 for call to Open. (ArgumentError)
>
> What's preplexing is the argument number is always the last argument,
> so if there are four arguments, the error will be on argument 3. Here
> is an example script that gives the error above:
>
> def new_com_object(prog_id)
>  System::Activator.CreateInstance(System::Type.GetTypeFromProgID(prog_id))
> end
>
> xls = new_com_object('Excel.Application')
> xls.Visible = true
> xls.Workbooks.Open('c:\\Book1.xls')
>
> --
> Shane Emmons
>

I figured it out, needed to to String#to_clr_string on every argument.

--
Shane Emmons
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core



More information about the Ironruby-core mailing list