From: Dennis Misener Date: 2006-03-29T23:48:42+09:00 Subject: Re: Win32OLE output parameter access?? In article <200603291215.k2TCFRiK012334@userg501.nifty.com>, masaki.suketa@nifty.ne.jp says... Progress!! Good news: It returns correct output parameters :-) Bad news: It only works once!! :-( But that could my logic error or Mindjets API problem. Thanks for speedy+helpful response (from the Win32OLE father himself!!!) --- require 'win32ole' include WIN32OLE::VARIANT MAX_DEPTH=5 MM=WIN32OLE.new("Mindmanager.Application") MM.visible=true def debug node p [:node,node] dispid=node.ole_method('getOffset').dispid node._invoke(dispid, [0.0, 0.0], [VT_R4|VT_BYREF, VT_R4|VT_BYREF]) p [:offset,WIN32OLE::ARGV] end def randomMap node,label='Main',depth=5 node.text=label depth.times do |index| subnode=node.addSubtopic 'label' debug subnode randomMap subnode,'%s %02d' % [label,index+1],rand(depth) end end node=MM.activeDocument.centralTopic randomMap node Produces: c:\work>demo [:node, #] [:offset, [30.0, -20.0]] [:node, #] C:/Work/demo.rb:14:in `_invoke': _invoke (WIN32OLERuntimeError) OLE error code:80040200 in MindManager.Application.6 Error: 'this topic is not able to execute the call' HRESULT error code:0x80020009 Exception occurred from C:/Work/demo.rb:14:in `debug' from C:/Work/demo.rb:22:in `randomMap' from C:/Work/demo.rb:20:in `times' from C:/Work/demo.rb:20:in `randomMap' from C:/Work/demo.rb:23:in `randomMap' from C:/Work/demo.rb:20:in `times' from C:/Work/demo.rb:20:in `randomMap' from C:/Work/demo.rb:28 > Hello, > > In message "Win32OLE output parameter access??" > on 06/03/29, Dennis Misener writes: > > > subnode.invoke('getOffset',0.0,0.0) # How to get this to work??? > > Try > include WIN32OLE::VARIANT > ... > dispid = subnode.ole_method('getOffset').dispid > subnode._invoke(dispid, [0.0, 0.0], [VT_R4|VT_BYREF, VT_R4|VT_BYREF]) > or > dispid = subnode.ole_method('getOffset').dispid > subnode._invoke(dispid, [0.0, 0.0], [VT_R8|VT_BYREF, VT_R8|VT_BYREF]) > > Regards, > Masaki Suketa