WIN32OLE type binding

Hi,

My COM Web Browser is making progress...
I can scan COM API, get and set properties value.

The next step is to permit RPC on methods.

Ruby reflexivity let me know :
- the list of methods for an object,
- parameters and their types for each method.

Now I seek for introspection about type binding between Ruby and COM...
I looked at the documentation where I see we can get all COM
classes...but not what I want. Here is an example of what I'm looking
for :

BSTR => String
I4 => Fixnum
F8 => Float
...

does anybody got an advice?

···

--
Posted via http://www.ruby-forum.com/.

Can you clarify your question a little bit? I'm not sure whether
you're asking how to call methods on an WIN32OLE object that are
provided by a DLL, or if you're looking for introspection that will
provide a methods signature...

-greg

···

On Fri, Jun 12, 2009 at 9:00 AM, Bruno Le hyaric<bruno.lehyaric@gmail.com> wrote:

Hi,

My COM Web Browser is making progress...
I can scan COM API, get and set properties value.

The next step is to permit RPC on methods.

Gregory Brown wrote:

Hi,

My COM Web Browser is making progress...
I can scan COM API, get and set properties value.

The next step is to permit RPC on methods.

Can you clarify your question a little bit? I'm not sure whether
you're asking how to call methods on an WIN32OLE object that are
provided by a DLL, or if you're looking for introspection that will
provide a methods signature...

-greg

Ok, I have a graphic interface from wich I want to call COM methods.
By introspection I know the signature of methods.
The problem is that my interface (a web page) only permits text input.
So all values I enter are Strings. I need to cast or interpret strings
to match parameters types...

I solve the problem for put properties like that :

# obj : COM object
# prop : name of the property
# value : string value I want to put
def cast_from_string(obj,prop,value)

#call the get property, only to know the type of the Ruby object
  type = obj.send prop.to_sym

#match on Ruby types and convert the string accordingly...
  case type
  when Integer
    return value.to_i
  when Float
    return value.to_f
  when TrueClass, FalseClass
    return value == true.to_s
  else
    return value
  end
end

So I want to convert String to the matching Ruby type
To do that, I need to have a list of COM types and their matched Ruby
types.
I wonder if there is that information somewhere in WIN32OLE...

I take a screenshot of the web page so you can have an better idea on
what I'm trying to do :slight_smile:

Attachments:
http://www.ruby-forum.com/attachment/3813/screen.JPG

···

On Fri, Jun 12, 2009 at 9:00 AM, Bruno Le > hyaric<bruno.lehyaric@gmail.com> wrote:

--
Posted via http://www.ruby-forum.com/\.

Oh I see, when you said COM Web Browser I thought you meant something
like building your own browser calling out to IE.
You literally meant browsing COM objects on the web. Interesting
idea... do you plan to open source this?

Unfortunately, I'm a bit of a WIN32OLE newb and this takes me a bit
out of my element. So maybe someone else can help you here.

···

On Fri, Jun 12, 2009 at 11:05 AM, Bruno Le hyaric<bruno.lehyaric@gmail.com> wrote:

So I want to convert String to the matching Ruby type
To do that, I need to have a list of COM types and their matched Ruby
types.
I wonder if there is that information somewhere in WIN32OLE...

I take a screenshot of the web page so you can have an better idea on
what I'm trying to do :slight_smile:

Attachments:
http://www.ruby-forum.com/attachment/3813/screen.JPG

Hello,

Bruno Le hyaric wrote:

So I want to convert String to the matching Ruby type
To do that, I need to have a list of COM types and their matched Ruby types.
I wonder if there is that information somewhere in WIN32OLE...

Sorry, but there is no way to get that information from Win32OLE.
The only way is reading win32ole.c(ole_variant2val() and
ole_val2variant()).

   Regards,
   Masaki Suketa

Or reading my translation win32ole.rb at
http://121.78.227.9/win32-ole/win32ole.rb

Regards,
Park Heesob

···

2009/6/13 Masaki Suketa <masaki.suketa@nifty.ne.jp>:

Hello,

Bruno Le hyaric wrote:

So I want to convert String to the matching Ruby type
To do that, I need to have a list of COM types and their matched Ruby
types.
I wonder if there is that information somewhere in WIN32OLE...

Sorry, but there is no way to get that information from Win32OLE.
The only way is reading win32ole.c(ole_variant2val() and
ole_val2variant()).