Hello,
I have a somewhat "complicated" output parameter I need to get via
WIN32OLE and I'm having trouble getting it correct. The method signature
is as follows:
void GetDescription (out VirtualSystemDescriptionType[] aTypes, out
wstring[] aRefs, out wstring[] aOvfValues, out wstring[] aVBoxValues,
out wstring[] aExtraConfigValues)
I'm able to get basic string output parameters fine, but as soon as I
hit this method, I was stumped. How am I supposed to query this method
via the 'win32ole' library. My initial attempts were failures:
object.GetDescription(0, 0, 0, 0, 0) # Errors type mismatch
object.GetDescription([], [], [], [], []) # Errors type mismatch
I'm fairly certain I'll have to use object._invoke directly here but I'm
not sure what types to put into the types array. I have the win32ole.c
file open and I'm looking at the various types which are defined but I'm
not sure which to try.
Some guidance would be greatly appreciated. How would I call this
function?
Thank you,
Mitchell Hashimoto
···
--
Posted via http://www.ruby-forum.com/.
I'm not sure what to do here either. Have you tried retrieving the WIN32OLE_METHOD and then looping through each param and asking its #ole_type?
Check out WIN32OLE_PARAM.ole_type for the general idea.
cr
···
On Apr 7, 2010, at 8:05 PM, Mitchell Hashimoto wrote:
Hello,
I have a somewhat "complicated" output parameter I need to get via
WIN32OLE and I'm having trouble getting it correct. The method signature
is as follows:
void GetDescription (out VirtualSystemDescriptionType aTypes, out
wstring aRefs, out wstring aOvfValues, out wstring aVBoxValues,
out wstring aExtraConfigValues)
I'm able to get basic string output parameters fine, but as soon as I
hit this method, I was stumped. How am I supposed to query this method
via the 'win32ole' library. My initial attempts were failures:
object.GetDescription(0, 0, 0, 0, 0) # Errors type mismatch
object.GetDescription(, , , , ) # Errors type mismatch
I'm fairly certain I'll have to use object._invoke directly here but I'm
not sure what types to put into the types array. I have the win32ole.c
file open and I'm looking at the various types which are defined but I'm
not sure which to try.
Chuck Remes wrote:
I'm not sure what to do here either. Have you tried retrieving the
WIN32OLE_METHOD and then looping through each param and asking its
#ole_type?
Check out WIN32OLE_PARAM.ole_type for the general idea.
Chuck,
Thanks for the response. I looped through each to print out the ole_type
and got the following:
VirtualSystemDescription,VirtualSystemDescription
BSTR,BSTR
BSTR,BSTR
BSTR,BSTR
I'm not sure why there are two for each? Besides that, do these types
mean something useful for the refs (for arrays)?
Mitchell
···
--
Posted via http://www.ruby-forum.com/\.
I don't really know how to deal with the VirtualSystemDescription but at least we know the BSTR maps to VT_BSTR in WIN32OLE::VARIANT. That's a good start.
So for BSTR use WIN32OLE::VARIANT::BSTR and for VirtualSystemDescription try WIN32OLE::VARIANT::VT_VARIANT. See what happens when you invoke the method with that argument list.
cr
···
On Apr 7, 2010, at 11:33 PM, Mitchell Hashimoto wrote:
Chuck Remes wrote:
I'm not sure what to do here either. Have you tried retrieving the
WIN32OLE_METHOD and then looping through each param and asking its
#ole_type?
Check out WIN32OLE_PARAM.ole_type for the general idea.
Chuck,
Thanks for the response. I looped through each to print out the ole_type
and got the following:
VirtualSystemDescription,VirtualSystemDescription
BSTR,BSTR
BSTR,BSTR
BSTR,BSTR
I'm not sure why there are two for each? Besides that, do these types
mean something useful for the refs (for arrays)?