我正在尝试创建一个 com 客户端以将消息发送到服务器。我有 ole 查看器定义并在 python 中创建了结构(类),用于构造一个复杂的结构,其中包含更多的结构和枚举。
一切似乎进展顺利,但是当我尝试将 SampleObject* 传递给客户端调用时,出现此错误:
ctypes.ArgumentError: argument 1: <type 'exceptions.TypeError'>:
expected LP__SampleObject instance instead of LP__SampleObject
这看起来很奇怪。我正在做的事情是这样的(这是我得到错误的地方):
dialog = _SampleObject('hello', struct1, 'hi_there', struct2, 1, struct3, 1, 1, 1, 'me', 'you', 'him')
obj.COM_function( pointer(dialog) )
我已经尝试了很多事情,但无法解决该错误。有任何想法吗 ?
(obj 只是一个 cc.CreateObject() coclass 对象,可以正常工作)
我真的看不出问题,即使是comtype定义也在界面中显示:
( ['in'], POINTER(_SampleObject), 'pAction' ),
与指针(对话框)完美契合。这是一个非常奇怪的错误,它可能是一个 but on comtypes 吗?