Complicated output parameter in WIN32OLE

  • Thread starter Mitchell Hashimoto
  • Start date
M

Mitchell Hashimoto

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
 
C

Chuck Remes

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.

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
 
M

Mitchell Hashimoto

Chuck said:
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
 
C

Chuck Remes

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)?

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,776
Messages
2,569,602
Members
45,185
Latest member
GluceaReviews

Latest Threads

Top