Hi, I've been doing some Ruby code interfacing with Windows COM objects and I've ran into this problem: I have a COM object method say object.Value(name) which - when i call it with appropriate "name" value returns some value. The problem is that the same is used (according to that COM lib documentation) for setting data to the object - i should write object.Value(name) = value and it should set the value. However I have not found a way to do this in Ruby - it gives me (and I can fully understand why) syntax error when I try to set data to the object. Does anybody know if this can be done using Ruby and possibly how? Thanks, Tom.
on 2007-02-23 16:13
on 2007-02-23 16:49
On 2/23/07, Tomas K. <firstname.lastname@example.org> wrote: > object.Value(name) = value and it should set the value. > > However I have not found a way to do this in Ruby - it gives me (and I > can fully understand why) syntax error when I try to set data to the > object. > > Does anybody know if this can be done using Ruby and possibly how? > > Thanks, Tom. try: object.Value[name] = value or: have a look at WIN32OLE docs and see if setproperty or invoke could do what you want or: post the exact code possibly with the links to the lib documentation. I'm not good enough to guess a general case, but I've been playing with COM a bit so I might be able to guess the particular case. J.
on 2007-02-23 17:04
Jan, thanks very much. Setproperty did the trick for me. Tom. Jan S. wrote: > or: have a look at WIN32OLE docs and see if setproperty or invoke > could do what you want >
on 2007-02-23 19:47
When calling methods on com objects in vbscript (ugh! pain ouch ouch ouch!) the overlaoded methods were accessed by a _number. Lets say it's the Vacuum object (the object that makes windows suck). In overloadable languages you can pass a Soul, an Idea, or Creativity into the Vacuum's suck method. The order they are defined in is important because that's the order (as far as I was able to figure out) that they are indexed in. To use Vacuum to suck a soul it would be myVaccum.suck_1(someonesSoul) an idea would be myVaccum.suck_2(goodIdeasAboutGuis) But that was just in vbscript. --Kyle