python接口调用失败_从Python脚本调用COM接口

在尝试使用Python脚本调用COM接口时遇到问题,具体表现为Python无法正确识别同时具有Set和Get定义的Property方法。尽管在ODL文件中Property方法正确地设置了propget和propput,但Python调用时将其解释为DISPATCH_PROPERTYGET,导致调用失败。更新中提到,使用GetProperty方法会导致AttributeError,而SetProperty方法可以正常工作。问题可能与Python与VBScript之间的语法差异有关。
摘要由CSDN通过智能技术生成

我尝试使用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->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值