我尝试使用Python脚本调用COM接口。在
我从ActivePython获得了Python的安装,我正在尝试使用脚本引擎编写部分代码。这通常适用于VBScript和JScript,但现在我想用PythonScript扩展它。在
脚本引擎是通过我定义的COM接口调用的。似乎大多数事情都能正常工作,但是当我调用一个同时具有Set和Get-defined的方法时,Python无法找到该方法的正确版本。在
在我的ODL文件中,我定义了一个名为Property的方法,它有一个propget和propput标志,具有相同的名称和id,如下所示:[propget,id(100)] HRESULT Property([in]BSTR* name,[out,retval]VARIANT* val);
[propput,id(100)] HRESULT Property([in]BSTR* name,[in]VARIANT val);
从JScript调用时,我可以这样做:
^{pr2}$
在COleDispatchImpl::Invoke第1309行中的脚本引擎“oledisp1.cpp”中,此调用被解释为DISPATCH_方法方法,然后根据对这部分代码中参数的测试将其更正为DISPATCH_PROPERTYPUTREF:// treat member calls on properties just like property get/set
if ((wFlags == DISPATCH_METHOD) &&
((pEntry->pfn == NULL && pEntry->pfnSet == NULL) ||
(pEntry->