[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

WIN32OLE - problem with argv

Rainer

12/2/2007 10:45:00 PM

Hello,

I'm having a problem trying to pass parameters by reference with
WIN32OLE::ARGV. What I'm actually trying to do is getting access to
OneNote 2007 as described here...

http://msdn2.microsoft.com/de-de/librar...(en-us).aspx

....but using Ruby instead.

Here's my little program:

-----
require "win32ole"
one = WIN32OLE.new("onenote.application")

class ON_CONST
end
WIN32OLE.const_load(one, ON_CONST)

a_string = ''

one.GetHierarchy(nil,ON_CONST::HsPages,a_string)
-----

GetHierarchy should pass the Hierarchy of OneNote pages into
"a_string" (I think). However, WIN32OLE::ARGV leaves "a_string" empty:

p WIN32OLE::ARGV
prompt> [-2147352572, 4, ""]

Using invoke won't make a difference:

one.invoke("GetHierarchy", nil,ON_CONST::HsPages,a_string)
p WIN32OLE::ARGV
prompt> [-2147352572, 4, ""]


Does anybody have an idea what I'm getting wrong? (I'm using Ruby
1.8.6)

Kind regards,

Rainer

P.S.: Any example for a successful pass by reference is appreciated,
even with another Office program like Excel or Word.

P.P.S.: I already have read the earlier discussion from Nov. 14 about
the same problem.


3 Answers

Masaki Suketa

12/2/2007 11:32:00 PM

0

Hello,

Rainer wrote:

> Here's my little program:
>
> -----
> require "win32ole"
> one = WIN32OLE.new("onenote.application")
>
> class ON_CONST
> end
> WIN32OLE.const_load(one, ON_CONST)
>
> a_string = ''
>
> one.GetHierarchy(nil,ON_CONST::HsPages,a_string)

I have not used OneNote 2007, so I'm not sure, but
could you try to use empty string (="") instead of nil as 1st argument?

one.GetHierarchy("",ON_CONST::HsPages,a_string)

Regards,
Masaki Suketa

Masaki Suketa

12/2/2007 11:56:00 PM

0

Masaki Suketa wrote:
> > one.GetHierarchy(nil,ON_CONST::HsPages,a_string)
>
> one.GetHierarchy("",ON_CONST::HsPages,a_string)
>

Or try to use WIN32OLE#_invoke method.
include WIN32OLE::VARIANT
one._invoke(dispid, ["", ON_ONST::HsPages, a_string],
[VT_BSTR, VT_I4, VT_BSTR|VT_BYREF])
The dispid should be dispatch id of GetHierarchy method.

Regards,
Masaki Suketa


Rainer

12/3/2007 1:30:00 AM

0

On 3 Dez., 00:56, Masaki Suketa <masaki.suk...@nifty.ne.jp> wrote:
> Masaki Suketa wrote:
>
> > > one.GetHierarchy(nil,ON_CONST::HsPages,a_string)
> >
> > one.GetHierarchy("",ON_CONST::HsPages,a_string)
> >
>
> Or try to use WIN32OLE#_invoke method.
> include WIN32OLE::VARIANT
> one._invoke(dispid, ["", ON_ONST::HsPages, a_string],
> [VT_BSTR, VT_I4, VT_BSTR|VT_BYREF])
> The dispid should be dispatch id of GetHierarchy method.
>
> Regards,
> Masaki Suketa

Dear Masaki,

thank you very much, that did the trick! Now I'm getting a massive XML
string as promised!

Kind regards,

Rainer