[python-win32] Fixing type ID for an interface file generated by makepy
Brad Buran
bburan at cns.nyu.edu
Tue Jan 25 07:44:41 CET 2011
When I generate the interface file for a COM object using makepy, it
generates an incorrect signature for one of the methods:
def ReadTag(self, Name=defaultNamedNotOptArg,
pBuf=defaultNamedNotOptArg, nOS=defaultNamedNotOptArg,
nWords=defaultNamedNotOptArg):
return self._oleobj_.InvokeTypes(9, LCID, 1, (3, 0), ((8, 0),
(16388, 0), (3, 0), (3, 0)),Name
, pBuf, nOS, nWords)
The C++ signature for the method is (based on a working C++ example
provided by the manufacturer):
long ReadTag(LPCTSTR Name, float * pBuf, long nOS, long nWords)
{
long result;
static BYTE parms[] = VTS_BSTR VTS_PR4 VTS_I4 VTS_I4 ;
InvokeHelper(0x9, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
Name, pBuf, nOS, nWords);
return result;
}
My understanding is that 16388 corresponds to VT_R4 (based on an old
email thread on this list). However, it should be a type code that
corresponds to VTS_PR4. I have hunted all over the internet (Google,
Bing, etc) and cannot find the correct number that I need to plug in
for VTS_PR4 to fix the signature in the interface file. The closest I
can find is this website,
http://msdn.microsoft.com/en-us/library/cc237865%28PROT.13%29.aspx.
However, it does not list VTS_PR4 (not to mention that 16388 is not in
the list either).
I would really appreciate any guidance in 1) figuring out the best way
to fix the signature or 2) finding a more comprehensive list of the
actual constant the type codes corresponds to.
Brad
More information about the python-win32
mailing list