Hi,

I believe a parameterless propget doesn't work as it should. Consider
the following interfaces:

interface IObject2: IDispatch
{
   [id(1), propput]  HRESULT AttValue   ( [in] BSTR attr, [in] VARIANT newVal);
   [id(1), propget]  HRESULT AttValue   ( [in] BSTR attr, [out,
retval] VARIANT *pVal);
};

interface IObject1: IDispatch
{
  [id(1), propget]    HRESULT Object2( [out, retval] IObject2** obj2)
};

The propput method of the object returned from IObject1 cannot be used.
obj1.Object2.SetAttValue("TEST", 123)

propget works:
obj1.Object2.AttValue("TEST")

In my gen_cache directory, there is code for IObject1, but no code for IObject2.

If I use the makepy utility, the generated code seems complete. There
is code generated for IObject2 and also for the parameterless
propput-wrapper for IObject1.

If I add a dummy parameter to the Object2 method of IObject1 everything works:

interface IObject1: IDispatch
{
  [id(1), propget]    HRESULT Object2( [in] VARIANT dummy, [out,
retval] IObject2** obj2)
};

obj1.Object2(999).SetAttValue("TEST", 123)

With this workaround, there is Python code generated for IObject2 too.

The ActiveScript engine has added a registered TypeLib with
AddTypeLib. The code works with VBScript, and considering the
workaround, I believe the problem is somewhere in Python / COM.

-- 
/Johan.
_______________________________________________
Python-win32 mailing list
Python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to